Dotnet-core-testing-library
.NET Core-テストライブラリ
この章では、StringLibraryをテストします。そのためには、デフォルトの規則に従うようにプロジェクトを再配置する必要があります。
*global.json* ファイルを開きましょう。
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
このファイルの上部にプロジェクト設定が表示され、デフォルトで src や test などのフォルダーが設定されます。
慣例により、これらのフォルダーにプロジェクトを配置する必要があります。これは新しい規則であり、.NET Coreの一部として使用されます。
ソリューションエクスプローラーでは、コンソールプロジェクトとライブラリプロジェクトの両方が src フォルダー内にあり、テストプロジェクトが test フォルダー内にあることがわかります。
また、ソリューションエクスプローラーのプロジェクト構造は、プロジェクトがディスク上の物理的に存在する場所を表していません。 ソリューションフォルダーを開いてみましょう。 StringLibrary プロジェクトが src フォルダー内にないことがわかります。
*src* フォルダーと *test* フォルダーの両方が、 *global.json* ファイルで指定された規則にマップされていることがわかります。 ただし、慣例ではない1つのプロジェクトStringLibraryがあります。 *src* フォルダー内に *StringLibrary* プロジェクトを追加しましょう。
srcフォルダーには2つのプロジェクトがあり、すべてのプロジェクトを適切に使用できるように問題を修正する必要があります。 Visual Studioに戻り、StringLibraryプロジェクトを右クリックして、[削除]オプションを選択します。 削除はされませんが、プロジェクトのみが削除されます。
srcフォルダーを右クリックして、[追加]→[既存のプロジェクト…]を選択します。
現在 src フォルダー内にあるStringLibraryプロジェクトを参照し、 StringLibrary.csproj ファイルを選択して、 Open をクリックします。
コンソールアプリの project.json ファイルから StringLibrary の参照を削除する必要があります。
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
},
"NuGet.CommandLine": "3.5.0",
"System.Runtime.Serialization.Json": "4.0.3"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": { },
"imports": "dnxcore50"
}
}
}
変更を保存し、コンソールプロジェクトに StringLibrary の参照を再度追加します。
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
},
"NuGet.CommandLine": "3.5.0",
"System.Runtime.Serialization.Json": "4.0.3"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"StringLibrary": {
"target": "project"
}
},
"imports": "dnxcore50"
}
}
}
これですべてが再び機能するようになり、エラーなしで StringLibrary をビルドしてから、 FirstApp (コンソールプロジェクト)をビルドできます。 次に、xunitを使用してStringLibrary機能をテストします。 StringLibraryの参照をテストプロジェクトに追加する必要があります。 StringLibraryTestsプロジェクトの参照を右クリックし、[参照の追加…]を選択します
*OK* をクリックして、テストプロジェクトに *StringLibrary* の参照を追加します。 *Tests.cs* ファイルの次のコードを置き換えましょう。
using System;
using Xunit;
using StringLibrary;
namespace Tests {
public class Tests {
[Fact]
public void StartsWithUpperCaseTest() {
string input = "Mark";
Assert.True(input.StartsWithUpper());
}
[Fact]
public void StartsWithLowerCaseTest() {
string input = "mark";
Assert.True(input.StartsWithLower());
}
[Fact]
public void StartsWithNumberCaseTest() {
string input = "123";
Assert.True(input.StartsWithNumber());
}
}
}
StringLibraryの機能をテストする3つのテストメソッドがあることがわかります。 [すべて実行]リンクをクリックすると、テストエクスプローラーに次の出力が表示されます。
コマンドラインからテストを実行することもできます。 コマンドプロンプトを開き、 dotnet test コマンドを実行します。