Before running tests, build Mono using the desired configuration.
To build the runtime tests for Mono JIT or interpreter:
- Build CoreCLR - the
clr.native
subset is enough but you can build the whole thing, optionally. From the$(REPO_ROOT)
:
./build.sh clr.native -c <release|debug>
- Build the tests (in
$(REPO_ROOT)/src/tests
)
cd src/tests
./build.sh excludemonofailures <release|debug>
Run individual test:
cd src/mono
make run-tests-coreclr CoreClrTest="bash ../../artifacts/tests/coreclr/OSX.x64.Release/JIT/opt/InstructionCombining/DivToMul/DivToMul.sh"
Run all tests:
cd src/mono
make run-tests-coreclr-all
Build the runtime tests for WebAssembly
$(REPO_ROOT)/src/tests/build.sh -excludemonofailures os Browser wasm <Release/Debug>
The last few lines of the build log should contain something like this:
--------------------------------------------------
Example run.sh command
src/tests/run.sh --coreOverlayDir=<repo_root>artifacts/tests/coreclr/Browser.wasm.Release/Tests/Core_Root --testNativeBinDir=<repo_root>/artifacts/obj/coreclr/Browser.wasm.Release/tests --testRootDir=<repo_root>/artifacts/tests/coreclr/Browser.wasm.Release --copyNativeTestBin Release
--------------------------------------------------
To run all tests, execute that command, adding wasm
to the end.
Build the runtime tests for Android x64/ARM64
$(REPO_ROOT)/src/tests/build.sh -excludemonofailures os Android <x64/arm64> <Release/Debug>
Run one test wrapper from repo root
export CORE_ROOT=<path_to_folder_Core_Root>
./dotnet.sh <path_to_xunit.console.dll> <path_to_*.XUnitWrapper.dll>
For more details about internals of the runtime tests, please refer to the CoreCLR testing documents
Build and run library tests against Mono JIT or interpreter
$(REPO_ROOT)/dotnet.sh build /t:Test /p:RuntimeFlavor=mono /p:Configuration=<Release/Debug> $(REPO_ROOT)/src/libraries/<library>/tests
Alternatively, you could execute the following command from $(REPO_ROOT)/src/mono
make run-tests-corefx-<library>
For example, the following command is for running System.Runtime tests:
make run-tests-corefx-System.Runtime
Build and run library tests against Webassembly, Android or iOS. See instructions located in Library testing document folder
There are a few convenient samples located in $(REPO_ROOT)/src/mono/sample
, which could help you test your program easily with different flavors of Mono or do a sanity check on the build. The samples are set up to work with a specific configuration; please refer to the relevant Makefile for specifics. If you would like to work with a different configuration, you can edit the Makefile.
To run the desktop Mono sample, cd to HelloWorld
and execute:
make run
Note that the default configuration of this sample is LLVM JIT.
To run the WebAssembly sample, cd to wasm
. There are two sub-folders browser
and console
. One is set up to run the progam in browser, the other is set up to run the program in console. Enter the desirable sub-folder and execute
make build && make run
To run the Android sample, cd to Android
and execute
make run
To run the iOS sample, cd to iOS
and execute
make run