Skip to content

Latest commit

 

History

History
45 lines (31 loc) · 1.67 KB

testing-managed-tools.md

File metadata and controls

45 lines (31 loc) · 1.67 KB

Testing managed tools

There are managed unit and functional tests for a number of tools including the compiler for NativeAOT (ILCompiler), and the trimmer (illink).

Adding new testsuites

To add a new test suite, create a new .csproj with a name that ends in Tests, such as: MyTool.Tests.csproj. The property IsTestProject will be set by the Directories.Build.props in the repository root. The property will, in turn, add references to the xunit package and the apropriate test runner.

Now add a ProjectToBuild item in eng/Substes.props to one of the existing subsets, such as clr.toolstests, or a new subset.

Adding new testsuites to CI

To run the tests in CI, add a new pipeline or add to an exsiting pipeline such as CLR_Tools_Tests in eng/pipelines/runtime.yml. Update the trigger condition, perhaps by adding a new set of paths to eng/pipelines/common/evaluate-default-paths.yml in order to run the tests when the tool source or the test sources change.

Running tests locally

Build and run the tests locally either with

./build.[sh|cmd] -s clr.toolstests -c [Release|Debug] -build -test

or

./dotnet.[sh|cmd] test .../MyTool.Tests.csproj -c [Release|Debug]

The dotnet-test xunit filter mechanisms work to run a single test or a subset of the tests

./dotnet.[sh|cmd] test .../MyTool.Tests.csproj -c [Release|Debug] --filter "FullyQualifiedName~MyTest"

The above command runs all tests whose fully-qualified name contains the substring MyTest. See dotnet test - Run selective unit tests for the full syntax.