我理解,从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) 我面临一个尴尬的局面 - 所有具有[ClassInitialize]方法的测试类都无法执行内部的所有测试方法.
例:
[TestClass]
public class ChargeAccountServiceTests
{
private static PrivateType ChargeAccountService_Accessor;
[ClassInitialize]
public static void InitializeClass(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext context)
{
ChargeAccountService_Accessor = new PrivateType(typeof(ChargeAccountService));
}
[TestMethod]
public void TestFixOMRHappySHA()
{
//TEST LOGIC
}
}
Run Code Online (Sandbox Code Playgroud)
导致测试代理抛出以下异常:
Test Name: TestFixOMRHappySHA
Test FullName: ChargeAccountServiceTests.TestFixOMRHappySHA
Test Source: \ChargeAccountServiceTests.cs : line 22
Test Outcome: Failed
Test Duration: 0:00:00
Run Code Online (Sandbox Code Playgroud)
结果消息:
方法ChargeAccountServiceTests.InitializeClass具有错误的签名.参数1应为Microsoft.VisualStudio.TestTools.UnitTesting.TestContext类型.
这个测试几天前就已经开始了.测试项目目标是.NET 3.5
c# unit-testing mstest visual-studio vs-unit-testing-framework