Как проверить, что метод не вызывается с помощью JUnit Mockito Verify - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть класс, для которого я пишу тест JUnit. Я пытаюсь проверить, не вызывается ли конкретный метод.

public class CountryProcess extends AbstractCountryProcess {

    private static final Logger log = LoggerFactory.getLogger(CountryProcessor.class);
    private static final Long MAX_FILE = 20l;

    @Override
    protected boolean processCountry(Region region, City city) {
        Long maxFile = region.getRequiredLongValue(SIZE);

        if (maxFile < MAX_FILE) {
            cntDao.addCountryLandMark(city);
        }
        else {
            log.warn("File size was big");
        }

        return true;
}

А тестовый класс:

public class CountryProcessTest {

    @Rule
    public final JUnitRuleMockery context = new JUnitRuleMockery();
    private final CntDao cntDao = context.mock(CntDao.class);

    @Before
    public void setup() {
        Injector injector = Guice.createInjector(new AbstractModule() {
            @Override
            protected void configure() {
                bind(cntDao.class).toInstance(cntDao);
            }
        });
    }

    @Test
    public void shouldIgnoreIfFileSizeBiggerThanPermitted() {
        //some code to make it trigger ELSE statement above...
        verify(cntDao, never()).addCountryLandMark(anyString());
    }
}

Но это возвращает следующую ошибку:

org.mockito.exceptions.misusing.NotAMockException:

Аргумент переданный в verify () имеет тип $ Proxy4 и не является ложным!

Убедитесь, что вы поставили круглые скобки правильно!

См. Примеры правильных проверок:

проверить (фиктивный) .someMethod ();

verify (mock, times (10)). SomeMethod ();

verify (mock, atLeastOnce ()). SomeMethod ();

Любая идея, как я могу это исправить в текущем контексте. Пожалуйста, приведите пример с использованием текущего кода, чтобы я получил лучшую идею?

1 Ответ

2 голосов
/ 30 апреля 2019

Вы смешиваете две насмешливые рамки:

  • jMock - JUnitRuleMockery
  • Мокито - verify метод

Очевидно, они не совместимы друг с другом. Ваш проверочный вызов выглядит нормально, я считаю, что он будет работать, как только он получит макет, созданный с помощью Mockito (используйте Mockito.mock(CntDao.class))

В качестве альтернативы never вы можете использовать Mockito.verifyNoMoreInteractions или Mockito.verifyZeroInteractions, но они менее специфичны.

...