8

MSDN から、ClassInitializeすべてのテストを実行する前に、すべてのテストのセットアップ コードを 1 回実行するメソッドをマークすることを理解しています。以下の要約フィクスチャにそのようなメソッドを含めると、すべてのテストが失敗します。コメントアウトするとすぐに、彼らは再び通過します。

[TestClass]
public class AuthenticationTests
{
    [ClassInitialize]
    public void SetupAuth()
    {
        var x = 0;
    }

    [TestMethod]
    public void TestRegisterMemberInit()
    {
        Assert.IsTrue(true);
    }
}
4

3 に答える 3

18

[ClassInitialize]装飾されたメソッドは静的であり、 type のパラメーターを 1 つだけ取る必要がありTestContextます。

[ClassInitialize]
public static void SetupAuth(TestContext context)
{
    var x = 0;
}

実際、コードをコピーしてクリーンな VS プロジェクトに貼り付けると、テストランナーはエラー メッセージでそれを正確に説明します。

メソッド UnitTestProject1.AuthenticationTests.SetupAuth の署名が間違っています。メソッドは静的で公開されている必要があり、値を返さず、TestContext 型のパラメーターを 1 つ受け取る必要があります。

于 2012-07-02T16:32:39.757 に答える
2

でマークされたメソッド[ClassInitialize]:

  1. テスト クラスの 1 つのメソッドだけに適用します。
  2. クラスはシールされている必要があります。つまり、継承されていません。
  3. メソッドは public static である必要があります。
  4. メソッドはTestContextパラメーターを渡す必要があります。
  5. メソッドは値を返しません。
于 2013-03-01T10:56:06.787 に答える
0

VS2015 では、TestContext パラメーターがないと、テストの実行時にこの最も役に立たないエラーが出力されます (私のように誰かが例外を検索している場合)。

スローされる例外: Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll の 'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeInspectionException'

于 2016-12-07T20:08:30.810 に答える