0

C# プロジェクトのビジュアル スタジオ ソリューションがあります。現在、ソリューションにテスト プロジェクトはありません。したがって、ファイル *.vsmdi がありません。

このようなコマンドラインでプロジェクトをテストしたいです。

MSTest.exe /testmetadata:*.vsmdi /resultsfile:Logfile.log

  1. プロジェクトを追加せずに .vsmdi を作成することはできますか? 可能であれば、どのように?

  2. コマンド ラインで実行するには、*.vsmdi ファイルがソリューションに存在する必要がありますか?

  3. IDE を使用してテストする必要がある場合、テスト プロジェクトに *.vsmdi ファイルが必要ですか?

  4. *.vsmdi ファイルの唯一の用途は、テスト ケースのリストです。

4

1 に答える 1

2

1) 技術的には、テスト プロジェクトをソリューションに追加せずに .vsmdi ファイルを作成することは可能です。VSMDI ファイルの内容は XML であるため、手動で記述したり、アセンブリ内のテストに基づいてツールを使用して生成したりできます。ただし、VSMDI ファイルの機能がテストを管理しているため、テスト プロジェクトがソリューションに含まれていない場合、VSMDI ファイルはあまり役に立ちません。ただし、引き続き使用できます (質問 2 への回答も参照してください)。

vsmdi ファイルを手動で作成する場合は、FQN を SHA1 でハッシュし、以下に示すようにハッシュの最初の 128 ビットの Guid を作成する必要があります (Dominic Hopton のコード)。詳細については、彼のブログ投稿: Helpful Internals of TRX (and VSMDI files)を参照してください。

private static HashAlgorithm s_provider = new SHA1CryptoServiceProvider(); 

internal static HashAlgorithm Provider
{
    get { return s_provider; }
} 

/// Calculates a hash of the string and copies the first 128 bits of the hash
/// to a new Guid.
/// 

internal static Guid GuidFromString(string data)
{
    byte[] hash = Provider.ComputeHash(
        System.Text.Encoding.Unicode.GetBytes(data)); 

    byte[] toGuid = new byte[16];
    Array.Copy(hash, toGuid, 16); 

    return new Guid(toGuid);
}

2) いいえ、vsmdi ファイルは、TestLink 要素の storage 属性が (vsmdi ファイルに関連する) テストを含む正しいアセンブリを指している限り、ソリューション フォルダー (またはソリューション) にある必要はありません。例えば:

<TestLink id="0c257cc9-ffed-cd5e-bda1-56df14ad68c2" name="AddOneAndTwo_Test"
 storage="TestProject\bin\debug\testproject.dll" />

3) Vsmdi ファイルは、プロジェクト レベルではなく、ソリューション レベルに存在します。複数のテスト プロジェクトがある場合は、1 つの vsmdi ファイルを使用してすべてのテストを管理できます。ソリューションにプロジェクトをロードしたと仮定して Visual Studio からテストを実行すると、 storage 属性が無視されることに注意してください。

4) Vsmdi ファイルは、ソリューション内のテストを管理するために使用され、VSMDI ファイル内にいくつかのレイヤーの階層を作成できます。たとえば、テストするソリューションに複数のアセンブリがあるとします。ルート テスト リスト (List Of Tests と呼ばれます) の下に、各プロジェクトのテスト リストを作成します。次に、プロジェクトの 1 つのテスト リストを 2 つ以上の個別のテスト リスト (たとえば、ビジネス ロジックのテスト用とエラー処理のテスト用) に分割できます。プロジェクト A のビジネス ロジック テストのみをテストする場合は、対応するテスト リストを選択して、その中でテストを実行できます。

vsmdi ファイルに関する追加の注意事項:

A) Visual Studio 2012 以降、Microsoft は VSMDI ファイル (およびそれらのテスト リスト) を非推奨にすることを決定しました。テスト リストは、テスト カテゴリ (Visual Studio 2010 には既に存在します) とプレイリストに置き換えられました。テスト カテゴリは、個々のテスト メソッドに設定できる属性であり、ビルドで使用できます。プレイリストは Visual Studio 2012 Update 2 で導入されましたが、現在 MSBuild ではサポートされていません。

テスト カテゴリの詳細については、http: //msdn.microsoft.com/en-us/library/dd286595.aspxを参照してください。

于 2013-03-18T21:54:44.037 に答える