我理解,从MSDN开始,ClassInitialize
标记一种方法,在所有测试运行之前,为所有测试执行一次设置代码。当我在下面的删节夹具中包含这样的方法时,所有测试都会失败。一旦我发表评论,他们就会再次通过。
[TestClass]
public class AuthenticationTests
{
[ClassInitialize]
public void SetupAuth()
{
var x = 0;
}
[TestMethod]
public void TestRegisterMemberInit()
{
Assert.IsTrue(true);
}
}
答案 0 :(得分:16)
[ClassInitialize]
修饰的方法应该是静态的,并且只采用TestContext
类型的一个参数:
[ClassInitialize]
public static void SetupAuth(TestContext context)
{
var x = 0;
}
事实上,如果我将您的代码复制粘贴到一个干净的VS项目中,那么testrunner会在错误消息中解释这一点:
方法UnitTestProject1.AuthenticationTests.SetupAuth签名错误。该方法必须是static,public,不返回值,并且应该采用TestContext类型的单个参数。
答案 1 :(得分:2)
标有[ClassInitialize]
的方法:
TestContext
参数。答案 2 :(得分:0)
在VS2015中,无法使用TestContext参数导致在运行测试时输出这个最无用的错误(如果有人正在搜索异常,就像我一样):
抛出异常:Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll中的'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeInspectionException'