Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



47 Commits

Repository files navigation Unity Runner

This program runs unit tests on Unity player so that a software work well on Unity's peculiar runtime environment, which differs from stable Mono.

You can download the executable binaries from the releases page.

This program takes one or more absolute paths to .NET assembly files (.dll) and run tests in them, e.g.:

./StandaloneLinux64 "$(pwd)"/YourTests.dll
StandaloneWindows64.exe C:\path\to\YourTests.dll

It also takes several options like -c/--select-class and -T/--exclude-trait-condition. See --help for details.

On macOS you need to invoke the actual executable binary in directory, e.g.: "$(pwd)"/YourTests.dll

Note that .dll files to test should target on .NET Framework (e.g., net461), not .NET Core.

CircleCI-style parallelism1

There are two options for running tests in distributed nodes: -D/--distributed and -s/--distributed-seed. The former option takes an argument in the N/M format, where N is the current node's zero-indexed number and M is the total number of distributed nodes. This option selects the subset of the test cases2 for the current node, and this guarantees two different nodes never run the same test case, which is redundant.

For example, the following options make the test execution to take advantage of CircleCI's parallelism:



I got Magic number is wrong: 542 error. I'm on Linux.

If the TERM environment variable is not set or it's a value unsupported by Mono (e.g., xterm-256color) yet Unity player's built-in Mono runtime could throw such an exception. You could work around this by setting it xterm:

TERM=xterm ./StandaloneLinux64 "$(pwd)"/YourTests.dll

See also the related issue on the Mono project:



  1. See also CircleCI's related docs: Running Tests in Parallel.

  2. Before a subset is selected, all test filters are applied first. Therefore, all distributed nodes have to apply the same set of filters.