运行 .NET Core 中的 NUnit 测试
Run NUnit tests in .NET Core
我正在尝试 运行 使用 .NET Core 对我的 C# 项目进行单元测试。
我在 运行 时间使用 Docker 容器。
Docker 文件
FROM microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" 和 "NUnit.Runners" 已添加到 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": { }
}
运行 dotnet restore
成功,输出如下
...
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.
我尝试 运行 测试:
dotnet nunit
dotnet nunit-console
但是不行。
我要怎么给 运行ner 打电话?或者是否有另一个单元测试框架适用于当前版本的 .NET Core?
更新 4: NUnit3TestAdapter v3.8 已经发布,因此不再是 alpha。
更新 3:
使用 NUnit3TestAdapter v3.8.0-alpha1 现在可以 运行 使用 dotnet test
命令进行测试。你只需要在你的测试项目中有这些依赖:
<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />
你可以试试看!
更新 2: Visual Studio 2017 以及从 project.json
到 csproj
的移动使得 dotnet-test-nunit
测试适配器已过时,所以我们需要为 运行 .NET Core 测试发布另一个更新的适配器。如果您使用的是 VS2017 和新的 .NET Core 工具,请参阅 Testing .NET Core with NUnit in Visual Studio 2017。如果您使用 project.json
.
,请参阅下面的更新
更新: NUnit 现在支持 dotnet test
,因此您不必再使用 NUnitLite。参见 testing .NET Core RC2 and ASP.NET Core RC2 using NUnit 3。
NUnit 控制台(和底层 NUnit 引擎)尚不支持 运行ning 针对 .NET 核心的单元测试。希望我们能在 NUnit 3.4 中获得这种支持。
同时,您可以使用 NUnitLite 将测试切换为自执行测试 运行ner。
我在 Testing .NET Core using NUnit 3 写了一篇关于过程的博客 post。快速总结是;
它应该是这样的;
using NUnitLite;
using System;
using System.Reflection;
namespace MyDnxProject.Test
{
public class Program
{
public int Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
}
有关更完整的信息,请参阅 my blog post。
我按照 做了一些小改动。现在终于可以用了。
using System;
using System.Reflection;
using NUnitLite;
using NUnit.Common;
........
public class Program
{
public static void Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
对答案进行一些调整,使其编译。
using System;
using System.Reflection;
using NUnit.Common;
using NUnitLite;
namespace NetMQ.Tests
{
public static class Program
{
private static int Main(string[] args)
{
using (var writer = new ExtendedTextWrapper(Console.Out))
{
return new AutoRun(Assembly.GetExecutingAssembly())
.Execute(args, writer, Console.In);
}
}
}
}
请注意,您可能还需要将项目从 class 库转换为控制台应用程序。
我正在尝试 运行 使用 .NET Core 对我的 C# 项目进行单元测试。 我在 运行 时间使用 Docker 容器。
Docker 文件
FROM microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" 和 "NUnit.Runners" 已添加到 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": { }
}
运行 dotnet restore
成功,输出如下
...
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.
我尝试 运行 测试:
dotnet nunit
dotnet nunit-console
但是不行。
我要怎么给 运行ner 打电话?或者是否有另一个单元测试框架适用于当前版本的 .NET Core?
更新 4: NUnit3TestAdapter v3.8 已经发布,因此不再是 alpha。
更新 3:
使用 NUnit3TestAdapter v3.8.0-alpha1 现在可以 运行 使用 dotnet test
命令进行测试。你只需要在你的测试项目中有这些依赖:
<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />
你可以试试看!
更新 2: Visual Studio 2017 以及从 project.json
到 csproj
的移动使得 dotnet-test-nunit
测试适配器已过时,所以我们需要为 运行 .NET Core 测试发布另一个更新的适配器。如果您使用的是 VS2017 和新的 .NET Core 工具,请参阅 Testing .NET Core with NUnit in Visual Studio 2017。如果您使用 project.json
.
更新: NUnit 现在支持 dotnet test
,因此您不必再使用 NUnitLite。参见 testing .NET Core RC2 and ASP.NET Core RC2 using NUnit 3。
NUnit 控制台(和底层 NUnit 引擎)尚不支持 运行ning 针对 .NET 核心的单元测试。希望我们能在 NUnit 3.4 中获得这种支持。
同时,您可以使用 NUnitLite 将测试切换为自执行测试 运行ner。
我在 Testing .NET Core using NUnit 3 写了一篇关于过程的博客 post。快速总结是;
它应该是这样的;
using NUnitLite;
using System;
using System.Reflection;
namespace MyDnxProject.Test
{
public class Program
{
public int Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
}
有关更完整的信息,请参阅 my blog post。
我按照
using System;
using System.Reflection;
using NUnitLite;
using NUnit.Common;
........
public class Program
{
public static void Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
对答案进行一些调整,使其编译。
using System;
using System.Reflection;
using NUnit.Common;
using NUnitLite;
namespace NetMQ.Tests
{
public static class Program
{
private static int Main(string[] args)
{
using (var writer = new ExtendedTextWrapper(Console.Out))
{
return new AutoRun(Assembly.GetExecutingAssembly())
.Execute(args, writer, Console.In);
}
}
}
}
请注意,您可能还需要将项目从 class 库转换为控制台应用程序。