c# - 在 .NET Core 中运行 NUnit 测试

标签 c# .net unit-testing nunit asp.net-core-1.0

我正在尝试使用 .NET Core 为我的 C# 项目运行单元测试。 我正在使用 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

但它不起作用。

我该如何调用运行者?或者是否有另一个单元测试框架适用于当前版本的 .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.jsoncsproj 的移动使得 dotnet-test-nunit 测试适配器已过时,因此我们需要发布另一个更新的适配器来运行 .NET Core 测试。请看Testing .NET Core with NUnit in Visual Studio 2017如果您使用的是 VS2017 和新的 .NET Core 工具。如果您使用的是 project.json,请参阅下面的更新。

更新:NUnit 现在支持dotnet test,因此您不必再使用NUnitLite。参见 testing .NET Core RC2 and ASP.NET Core RC2 using NUnit 3 .


NUnit 控制台(和底层 NUnit 引擎)尚不支持针对 .NET 核心运行单元测试。希望我们能在 NUnit 3.4 中获得这种支持。

与此同时,您可以使用 NUnitLite 将测试切换到自执行测试运行程序。

我在 Testing .NET Core using NUnit 3 上写了一篇关于这个过程的博文.一个快速的总结是;

  1. 为您的测试项目创建 .NET Core 控制台应用程序。
  2. 引用 NUnitNUnitLite从你的测试项目。你不需要赛跑者。
  3. 修改 main() 以执行单元测试。

应该是这样的;

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 .

关于c# - 在 .NET Core 中运行 NUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36578232/

相关文章:

c# - 将并发字典保存线程不安全的集合是否需要在C#中锁定

c# - 为什么razor会自动四舍五入到小数点后2位?

c# - 将多个参数从 IronPython 传递到 .NET 方法

.net - 我们可以将 'Microsoft.ACE.Oledb.12.0.dll' 的引用添加到项目中吗

python - Pytest跳过具有特定参数值的测试

c# - Telerik MVC ScriptRegistrar 复制 javascript

.net - WCF数据服务SaveChanges问题

.net - 如何使用 Mono 为 AWS Lambda 函数创建 .NET 函数代码 zip 文件?

unit-testing - 用于单元/集成测试的嵌入式动物园管理员

javascript - Karma 没有存储提供程序,但已添加