ドットネットコアを使用してC#プロジェクトのユニットテストを実行しようとしています。実行時にdockerコンテナを使用しています。
Dockerfile
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
うまくいかない。
だから私の質問は、どのようにランナーに電話するのですか?または、誰かが現在のバージョンのドットネットコアで動作する別のユニットテストフレームワークを提案できますか?
あなたが提供できる助けを感謝します。ありがとうございました!
更新4:NUnit3TestAdapter v3.8 がリリースされたため、アルファ版ではなくなりました。
アップデート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のテスト でプロセスに関するブログ記事を書きました。簡単な要約は次のとおりです。
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);
}
}
}
_
より完全な情報については、 私のブログ投稿 を参照してください。
@ 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);
}
}
}
}
また、プロジェクトをクラスライブラリからコンソールアプリケーションに変換する必要がある場合があることに注意してください。