There are managed unit and functional tests for a number of tools including the
compiler for NativeAOT (ILCompiler
), and the trimmer (illink
).
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.
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.
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.