为什么ClassInitialize装饰方法使我的所有测试失败?

Pro*_*ofK 7 .net unit-testing mstest

我理解,从MSDN开始,ClassInitialize就是在所有测试运行之前标记一个为所有测试执行设置代码的方法.当我在下面的简化夹具中包含这样的方法时,所有测试都会失败.一旦我发表评论,他们就会再次通过.

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

    [TestMethod]
    public void TestRegisterMemberInit()
    {
        Assert.IsTrue(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

dri*_*iis 16

[ClassInitialize]装饰方法应该是静态的,并采取类型的只有一个参数TestContext:

[ClassInitialize]
public static void SetupAuth(TestContext context)
{
    var x = 0;
}
Run Code Online (Sandbox Code Playgroud)

实际上,如果我将代码复制粘贴到一个干净的VS项目中,那么testrunner会在错误消息中解释这一点:

方法UnitTestProject1.AuthenticationTests.SetupAuth具有错误的签名.该方法必须是static,public,不返回值,并且应该采用TestContext类型的单个参数.