Как проверить, что метод не вызывается на макете только в рамках одного теста? - PullRequest
1 голос
/ 07 октября 2019

Я понимаю, что могу verify(mock, times(0)).methodCall(), и это работает, когда я запускаю один тест по отдельности. Проблема в том, что другие тесты в файле взаимодействуют с этим методом, и когда я запускаю все тесты в файле, я получаю исключение org.mockito.exceptions.verification.NeverWantedButInvoked:, потому что другой тест взаимодействовал с макетом.

Есть ли способ ограничить verify() только подсчетом количества взаимодействий в пределах одного метода теста вместо подсчета взаимодействий по всем тестам в файле?

1 Ответ

1 голос
/ 07 октября 2019

Обычный шаблон: вы создаете новый макет для каждого тестового случая.

Например, с JUnit и Mockito это может выглядеть так:

@RunWith(MockitoJUnitRunner.class)
public class FooTest {
  @Mock 
  Bar mockedBar;
  ...

Это создаст новый макет для каждого из ваших методов @Test. Когда вы следуете этой практике, вам не нужно беспокоиться о вызовах «перекрестного теста». Потому что каждый тест использует свои «собственные» макеты.

Или наоборот: избегайте повторного использования одинаковых макетов объектов для нескольких тестов.

И чтобы прояснить это: фиктивные объекты не знают об этом "контексте метода тестирования". Они создаются в какой-то момент, и затем происходят вызовы методов. Насмешке все равно или неизвестно, «откуда» эти звонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...