Я изучаю Мокито. Перед тем, как начать использовать фиктивные объекты, у меня было несколько модульных тестов, которые больше походили на интеграционные тесты, поэтому у меня был тестовый класс с setUpBeforeClass () следующим образом:
@BeforeClass
public static void setUpBeforeClass() throws Exception {
instance = new UserDataAccess();
instance.setDb(new MyDb());
}
Теперь с mock Object во многом похоже, но настройка немного сложнее:
@BeforeClass
public static void setupBeforeClass throws Exception {
instance = new UserDataAccess();
MyDb myDb = mock(MyDb.class);
when(...).thenReturn(...);
...
instance.setDb(myDb);
}
Также у меня есть набор тестов, который используется для загрузки БД в известном состоянии перед запуском тестов, и это делается с помощью первого тестового класса, вызываемого набором.
Я думаю, что мне не следует выбрасывать интеграционные тесты, поэтому я подумал о разделении набора тестов на UnitTestSuite и IntegrationTestSuite. Фактически, макетные тесты не тестируют все, например, они не проверяют правильность запросов.
Кроме того, единственной разницей между этими двумя наборами будет исходный сброс БД и код setUpBeforeClass (). Было бы бесполезно копировать и изменять все тестовые классы только для того, чтобы изменить метод. Первоначальный сброс БД легко пропустить, я просто не включаю тестовый класс сброса БД в набор модульных тестов.
Что вы предлагаете для разделения модульного и интеграционного тестов? Расширение всех исходных классов для переопределения статического метода с последующим включением нужного класса в набор?
Или другие подходы? Как вы это делаете или что бы вы сделали?