2016-04-12 10 views
22

私はC#プロジェクトのユニットテストをdotnetコアで実行しようとしています。 私は実行時にドッカーコンテナを使用しています。dotnetコアでNUnitテストを実行します。

Dockerfile

FROM microsoft/dotnet:0.0.1-alpha 
RUN mkdir /src 
WORKDIR /src 
ADD . /src 
RUN dotnet restore 

"NUnitの" と "NUnit.Runners" は、以下の出力

みました
... 
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. 

で成功し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に追加されましたテストを実行する

dotnet nunit

dotnet nunit-console

ない仕事。

私の質問はどのようにランナーに電話するつもりですか?または、誰かがdotnetコアの現在のバージョンで動作する別のユニットテストフレームワークを提案することができますか?

あなたが提供できる助けをお待ちしております。ありがとうございました!

答えて

24

更新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とcsprojproject.jsonからの移動はdotnet-test-nunitテストアダプタが廃止され、私たちは、.NETのコアのテストを実行するには、別の更新アダプターを解放する必要がありました。 VS2017と新しい.NETコアツールを使用している場合は、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 console(および基礎となるNUnitエンジン)は、まだ.NETコアに対する単体テストの実行をサポートしていません。うまくいけば、私たちはNUnit 3.4でそのサポートを得るでしょう。

一方、NUnitLiteを使用して、テストを自己実行テストランナーに切り替えることができます。

私はプロセスのブログ投稿をTesting .NET Core using NUnit 3に書きました。簡単な要約は次のとおりです。

  1. テストプロジェクト用に.NET Core Consoleアプリケーションを作成します。テストプロジェクトのNUnitNUnitLiteを参照してください。ランナーは必要ありません。
  2. 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を参照してください。

+0

ありがとう@ Rob-Rrouse。引数2: 'System.IO.TextWriter'から 'NUnit.Common.ExtendedTextWriter'に変換できません。チェックされたソースコード、メソッドのシグネチャは 'public int Execute(string [] args、ExtendedTextWriter writer、TextReader reader) 'です。 –

+0

最終リリースのシグネチャを更新したことを忘れました。私の答えでコードを更新しました。私のブログ投稿も更新してください:) –

+0

もう一つの可能​​なアップデート: 'dotnet test'はVS2017スタイルの' .csproj'プロジェクトファイルではサポートされていません。それまで[推奨](https://github.com/nunit/dotnet-test-nunit/issues/98#issuecomment-271643437)はNUnitLiteを使用することです。 –

2

@ 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); 

    } 
} 
0

コンパイルするには、いくつかの調整が必要です。

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); 
      } 
     } 
    } 
} 

プロジェクトをクラスライブラリからコンソールアプリケーションに変換する必要があります。

関連する問題