我运行两个并行共享资源的测试。
我预计Test1会失败,但是事实证明,MsTestV2创建了测试类的一个新实例,因此成员变量不被共享。
通过检查每个测试的对象哈希码以及调用构造函数的次数来验证这一点。
[TestClass]
public class ParallelizationTest
{
private int psw = 0;
public ParallelizationTest()
{
Console.Out.WriteLine("Ctor: ParallelizationTest");
}
[TestMethod]
public void Test1()
{
Console.Out.WriteLine("Test1 started with HashCode: " + GetHashCode());
Thread.Sleep(5000);
Assert.AreEqual(psw, 0);
Console.Out.WriteLine("Test1 ended");
}
[TestMethod]
public void Test2()
{
Console.Out.WriteLine("Test2 started with HashCode: " + GetHashCode());
psw = 123;
Assert.AreEqual(psw, 123);
Console.Out.WriteLine("Test2 ended");
}
}MsTestV2被配置为(Worker设置为2):
<RunSettings>
<RunConfiguration>
<TargetPlatform>x86</TargetPlatform>
<MaxCpuCount>1</MaxCpuCount>
<DisableParallelization>false</DisableParallelization>
<TestSessionTimeout>1000000</TestSessionTimeout>
</RunConfiguration>
<MSTest>
<Parallelize>
<Workers>2</Workers>
<Scope>MethodLevel</Scope>
</Parallelize>
</MSTest>
</RunSettings>MsTest框架是否保证创建测试类的新实例?
发布于 2019-06-24 13:03:55
MSTest为每个测试方法创建一个新的TestClass实例。MSTestV2也在继续这种行为。.runsettings不影响这种行为。
请考虑在MSTestV2文档回购上提交一个问题,以使文档得到澄清。
https://stackoverflow.com/questions/56726106
复制相似问题