Я запускаю два теста, которые совместно используют ресурсы.
Я ожидал, что Test1 потерпит неудачу, однако оказалось, что MsTestV2 создает новый экземпляр класса test и, следовательно, переменная-член не является общей.
Это проверяется проверкой хеш-кода объекта для каждого теста, а также проверкой того, сколько раз вызывается конструктор.
[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 настроен как ( Рабочие установлены на 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?