Создание тестируемого объекта в конструкторе класса unit-тестов?



@F1000

Здравствуйте. Есть метод, создающий коллекцию объектов из входящей строки. Если при unit-тестировании получить коллекцию и сохранить её в конструкторе, а в тест-методах только вызывать assert’ы, проверяющие объекты в коллекции, то это будет считаться плохой практикой?

public class Test
  {
    private List<T> collection;

    public Test()
    {
      collection = Foo("const"); // тестируемая функция
    }
        

    [Fact]
    public void CollectionIsNotNull()
    {
      Assert.NotNull(collection);
    }    
    // остальные тесты
  }


Решения вопроса 1



@user_of_toster

В js/ts есть похожая практика, когда в блоке beforeAll() устанавливаются нужные для связанных по концепции тестов компоненты, а потом сами тесты выходят в одну-две строки и состоят только из assert’ов. Имхо, помогает соблюдать DRY и ничего плохого в этом нет

describe("My class", () => {
     let myMock, myFunc, myClass;
     beforeAll(() => {
         /// здесь устанавливаю моки, впрыскиваю зависимости и т.д;
     })

     test("mock works well with numbers", () => {
          assert(myMock).worksWellwithStrings()
     })

     test("class works well with numbers", () => {
          assert(myClass).worksWellWithMocks()
     })

     test("instance works well with numbers", () => {
          assert(myInstance).worksWell()
     })
})

Комментировать

Ответы на вопрос 0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *