[英]Run NUnit tests in .NET Core
我正在嘗試使用 .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.json
遷移到csproj
使dotnet-test-nunit
測試適配器過時,因此我們需要發布另一個更新的適配器來運行 .NET Core 測試。 如果您使用 VS2017 和新的 .NET Core 工具,請參閱在 Visual Studio 2017中使用NUnit 測試 .NET Core 。 如果您使用的是project.json
請參閱下面的更新。
更新: NUnit 現在支持dotnet test
,因此您不再需要使用 NUnitLite。 請參閱使用 NUnit 3 測試 .NET Core RC2 和 ASP.NET Core RC2 。
NUnit 控制台(和底層 NUnit 引擎)尚不支持針對 .NET 核心運行單元測試。 希望我們能在 NUnit 3.4 中獲得這種支持。
同時,您可以使用 NUnitLite 將您的測試切換到自動執行的測試運行器。
我寫了一篇關於使用 NUnit 3 測試 .NET Core過程的博客文章。 一個快速的總結是;
它應該是這樣的;
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);
}
}
}
有關更完整的信息,請參閱我的博客文章。
我按照Rob-Prouse 的建議做了,做了一些小改動。 它現在終於起作用了。
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);
}
}
}
}
請注意,您可能還必須將項目從類庫轉換為控制台應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.