MsTest распараллеливание - PullRequest
1 голос
/ 23 июня 2019

Я запускаю два теста, которые совместно используют ресурсы.

Я ожидал, что 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?

1 Ответ

0 голосов
/ 24 июня 2019

MSTest создает новый экземпляр [TestClass] для каждого метода тестирования.Такое поведение продолжается и с MSTestV2..runsettings не влияет на это поведение.
Пожалуйста, рассмотрите вопрос о регистрации в MSTestV2 doc repo для уточнения документации.

...