web-dev-qa-db-ja.com

ドットネットコアでNUnitテストを実行する

ドットネットコアを使用して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

うまくいかない。

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

あなたが提供できる助けを感謝します。ありがとうございました!

27
Awakening Byte

更新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のテスト でプロセスに関するブログ記事を書きました。簡単な要約は次のとおりです。

  1. テストプロジェクト用の.NET Core Consoleアプリケーションを作成します。
  2. リファレンス NUnit および NUnitLite テストプロジェクトから。ランナーは必要ありません。
  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);
    }
  }
}
_

より完全な情報については、 私のブログ投稿 を参照してください。

28
Rob Prouse

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

    }
}
3
Awakening Byte

答えを微調整して、コンパイルできるようにします。

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

また、プロジェクトをクラスライブラリからコンソールアプリケーションに変換する必要がある場合があることに注意してください。

0
Drew Noakes