Из следующих двух тестовых примеров в BundleProcessorTest.java я получаю ниже исключения, хотя мой первый тестовый пример успешно проходит.
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Обнаружен ошибочный аргумент аргументов:
- > at bundle.test.BundleProcessorTest.bundlePluginShouldNotBeNull(BundleProcessorTest.java:22)
Вы не можете использовать аргументы аргументов вне проверки или stubbing. Примеры правильного использования аргументов: когда (mock.get(anyInt())) thenReturn (нуль). doThrow (новое RuntimeException()). когда (mock).someVoidMethod(anyObject()); проверить (макет).someMethod(содержит ( "Foo" ))
Кроме того, эта ошибка может появиться, потому что вы используете аргументы соответствия с методы, которые нельзя издеваться. Следующие методы не могут быть stubbed/verified: final/private/equals()/hashCode().
в bundle.test.BundleProcessorTest.bundlePluginCollectionShouldNotBeNull(BundleProcessorTest.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(Неизвестный источник)
Ниже приведен упрощенный список кодов: -
BundlePlugin.java
package bundle;
import java.util.List;
public class BundlePlugin {
private final String pluginName ;
private final List<String> featureContent ;
public BundlePlugin(String pluginName, List<String> featureContent) {
super();
this.pluginName = pluginName;
this.featureContent = featureContent;
}
public String getPluginName() {
return pluginName;
}
public List<String> getFeatureContent() {
return featureContent;
}
}
BundleProcessor.java
package bundle;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class BundleProcessor {
public BundlePlugin getBundlePlugin(String pluginName, Iterator<String> artifactIterator) {
List<String> featureContent = new ArrayList<String>() ;
return new BundlePlugin(pluginName, featureContent);
}
}
BundleProcessorTest.java
package bundle.test;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import bundle.BundleProcessor;
public class BundleProcessorTest {
BundleProcessor bundleProcessor = new BundleProcessor() ;
@Test
public void bundlePluginShouldNotBeNull() {
Iterator<String> artifactIterator = mock(Iterator.class) ;
bundle.BundlePlugin bundlePlugin = bundleProcessor.getBundlePlugin(anyString(), artifactIterator) ;
assertNotNull( bundlePlugin );
}
@Test
public void bundlePluginContentShouldNotBeNull() {
Iterator<String> artifactIterator = mock(Iterator.class) ;
bundle.BundlePlugin bundlePlugin = bundleProcessor.getBundlePlugin(anyString(), artifactIterator) ;
List<String> featureContent = bundlePlugin.getFeatureContent() ;
assertNotNull( featureContent );
}
}
Как выполнить этот тест без проблем.
Изменить 1:
Но если я отмечаю тест bundlePluginCollectionShouldNotBeNull с аннотацией @Ignore, тогда первый тестовый пример проходит без каких-либо исключений.