I am trying to run unit tests for my C# project with .NET Core. I am using a Docker container for the runtime.
Dockerfile
FROM microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" and "NUnit.Runners" have been added into project.json
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"NUnit": "3.2.0",
"NUnit.Runners": "3.2.0"
},
"frameworks": {
"dnxcore50": { }
}
Run dotnet restore
successfully with the following output
...
log : Installing NUnit.ConsoleRunner 3.2.0.
log : Installing NUnit.Extension.NUnitV2ResultWriter 3.2.0.
log : Installing NUnit.Extension.NUnitV2Driver 3.2.0.
log : Installing NUnit.Extension.VSProjectLoader 3.2.0.
log : Installing NUnit.Extension.NUnitProjectLoader 3.2.0.
log : Installing NUnit.Runners 3.2.0.
info : Committing restore...
log : Restore completed in 4352ms.
I tried to run the tests with:
dotnet nunit
dotnet nunit-console
But it doesn't work.
How am I going to call the runner? Or is there another unit testing framework that works with the current version of .NET Core?
Update 4: The NUnit3TestAdapter v3.8 has been released, so it is no longer alpha.
Update 3: With NUnit3TestAdapter v3.8.0-alpha1 it is possible now to run the tests using
dotnet test
command. You just need to have these dependencies in your test project:You can try it out!
Update 2: Visual Studio 2017 and the move from
project.json
tocsproj
made thedotnet-test-nunit
test adapter obsolete, so we needed to release another updated adapter to run .NET Core tests. Please see Testing .NET Core with NUnit in Visual Studio 2017 if you are using VS2017 and the new .NET Core tooling. See the update below if you are usingproject.json
.Update: NUnit now has support for
dotnet test
, so you no longer have to use NUnitLite. See testing .NET Core RC2 and ASP.NET Core RC2 using NUnit 3.NUnit console (and the underlying NUnit Engine) do not support running unit tests against .NET core yet. Hopefully we will get that support in NUnit 3.4.
In the meantime, you can use NUnitLite to switch your tests to a self-executing test runner.
I wrote a blog post on the process at Testing .NET Core using NUnit 3. A quick summary is;
main()
to execute the unit tests.It should look like this;
For more complete information, see my blog post.
I did as Rob-Prouse suggested, with minor changes. It finally works now.
Some tweaks to the answer, to make it compile.
Note that you may also have to convert your project from a class library to a console application.