Mockito / Powermock: matcher any () ложно не соответствует (но anyOrNull () делает

Я использую Mockito / Powermock в модульном тесте Android, написанном на Kotlin. У меня есть код, как следует:

verify(myCompanionMock, atLeastOnce()).someMethod(any(), any())

Но я получаю эту ошибку:

Comparison Failure: 
<Click to see difference>

Argument(s) are different! Wanted:
companion.someMethod(
    <any java.io.File>,
    <any java.io.File>
);
-> at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:182)
Actual invocation has different arguments:
companion.someMethod(
    null,
    null
);

соответственно, если я заменю matcher any() на anyOrNull() через который проходит тест. Я вступил с отладчиком, чтобы проверить, что фактические объекты File (которые не являются фиктивными) передаются someMethod (). Я также проверил, что насмешка над статическими объектами Companion работает. (Все остальные тесты на нем работают как положено).

Статический класс Companion написан на Kotlin. Тестируемый класс, вызывающий Companion, написан на Java. @PrepareForTest @PrepareForTest для этих классов установлены правильно (все остальные тесты работают должным образом)

Поэтому мне интересно, пропустил ли я что-то или это проблема с сопоставителями Mockito, о которых я не знаю?

Всего 1 ответ


Это, кажется, рекомендуемый способ использования сопоставителей аргументов с PowerMock:

// class containing static method
public class Companion {
    public static void someMethod(File a, File b) { }
}

// test class
@RunWith(PowerMockRunner.class)
@PrepareForTest(Companion.class)
public class CompanionTest {

    @Test
    public void testCompanion() {

        PowerMockito.mockStatic(Companion.class);

        // call method with non-null arguments
        Companion.someMethod(Mockito.mock(File.class), Mockito.mock(File.class));

        // verify
        PowerMockito.verifyStatic(Companion.class);
        Companion.someMethod((File) ArgumentMatchers.notNull(), 
                             (File) ArgumentMatchers.notNull());
    }
}

Это работало для меня, используя JUnit 4, Mockito 2.28.2 и PowerMock 2.0.2.


Есть идеи?

10000