почему плохо избегать введения общего состояния в тестовые классы? - PullRequest
0 голосов
/ 09 мая 2020

Я читал книгу по модульному тестированию, ниже это обозначено как плохой код в книге:

public class CustomerTests
{
   private Store _store;

   [Fact]
   public void Test1()
   {
      //act 
      _store = new Store(5);
      ...
   }

   [Fact]
   public void Test2()
   {
      //act 
      _store = new Store(100);
      ...
   }
}

Как мы знаем, когда xUnit или другие фреймворки тестирования, создается новый экземпляр тестового класса (конструктор запускается перед каждым тестом в классе) для каждого теста, поэтому в моем примере, поскольку у меня есть два метода тестирования, есть два экземпляра CustomerTests, поскольку они являются разными объектами / экземплярами, поэтому _store instance / свойство в другом экземпляре, следовательно, также независимы, что означает, что один тестовый метод изменяет свой _store, а другой _store в другом экземпляре не затрагивается. Так что технически они не являются «общим состоянием», почему нам нужно избегать этого?

...