web-dev-qa-db-ja.com

.NET Standard 1.6ライブラリのユニットテスト

.NET Standard 1.6クラスライブラリ(.NET Coreプロジェクトから参照可能)の単体テスト方法に関する最新のドキュメントを見つけることができません。

これが私のproject.json私のライブラリのように見えます:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "Portable.BouncyCastle": "1.8.1.2"
  },
  "frameworks": {
    "netstandard1.6": {}
  }
}

ここで残っているタスクは、単体テストを実行できるプロジェクトを作成できるようにすることです。目標はxUnitを使用することです。これは.NET Coreチームが推進していることのようです。

先に進み、次のようなproject.jsonを持つ別の.NET Portableライブラリプロジェクトを作成しました。

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "xunit": "2.2.0-beta4-build3444",
    "xunit.runner.visualstudio": "2.1.0"
  },
  "frameworks": {
    "netstandard1.6": {

    }
  }
}

そのプロジェクト内の私のテストクラスは次のようになります。

using USB.EnterpriseAutomation.Security.DotNetCore;
using Xunit;

namespace Security.DotNetCore.Test
{
    public class AesEncryptionHelperTests
    {
        [Fact]
        public void AesEncryptDecrypt()
        {
            var input = "Hello world!";
            var encrypted = AesEncryptionHelper.AesEncrypt(input);
            var decrypted = AesEncryptionHelper.AesDecrypt(encrypted);

            Assert.Equal(input, decrypted);
        }
    }
}

先に進んでそのプロジェクトをビルドすると、テストエクスプローラーにはテストが表示されません。

このライブラリをテストできる単体テストを作成するにはどうすればよいですか?

16
blgrnboy

現在、xunit 2.1.0およびdotnet-test-xunit 2.2.0-preview2-build1029を使用した作業プロジェクトがあります。

これは私の project.json単体テストプロジェクトの場合:

{
  "dependencies": {
    "dotnet-test-xunit": "2.2.0-preview2-build1029",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    },
    "MyProject.Library": {
      "target": "project",
    },
    "xunit": "2.1.0"
  },
  "description": "Unit tests",
  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dotnet"
    }
  },
  "testRunner": "xunit"
}

これは、コマンドライン(dotnet test)およびVisual Studio 2015 Test Explorerで。

dotnet-test-xunitは非推奨になりましたが、わかりません。上記のすべては、project.jsonが廃止された後に変更される可能性がありますが、これは今日機能します。

5
Nate Barbettini

この問題は、xUnitのGitHubページに投稿されています: https://github.com/xunit/xunit/issues/1032

Brad Wilsonが説明しているように、NETStandardライブラリは、ドットネットコアライブラリまたは完全な.Net Frameworkライブラリでテストする必要があります。

私の場合、ユニットテストライブラリを完全な「クラシックデスクトップ」ライブラリにし、テストエクスプローラーでテストを実行できました。

9
Brett Mathe