Dot-Net
為什麼 ClassInitialize 修飾的方法會使我的所有測試都失敗?
我從 MSDN 了解到,這
ClassInitialize是標記一種方法,該方法將在所有測試執行之前為所有測試執行一次設置程式碼。當我在下面的節略夾具中包含這樣的方法時,所有測試都失敗了。一旦我將其註釋掉,它們就會再次通過。[TestClass] public class AuthenticationTests { [ClassInitialize] public void SetupAuth() { var x = 0; } [TestMethod] public void TestRegisterMemberInit() { Assert.IsTrue(true); } }
[ClassInitialize]裝飾方法應該是靜態的,並且只採用一個類型的參數TestContext:[ClassInitialize] public static void SetupAuth(TestContext context) { var x = 0; }事實上,如果我將您的程式碼複製粘貼到一個乾淨的 VS 項目中,測試執行程序會在錯誤消息中準確解釋這一點:
方法 UnitTestProject1.AuthenticationTests.SetupAuth 的簽名錯誤。該方法必須是靜態的、公共的、不返回值並且應該採用 TestContext 類型的單個參數。
標有 的方法
[ClassInitialize]:
- 僅適用於測試類的一種方法。
- 該類必須是密封的,即不能繼承。
- 該方法必須是公共靜態的。
- 該方法必須傳遞一個
TestContext參數。- 該方法不返回值。