草庐IT

DexMaker-Mockito

全部标签

java - 如何让 Mockito 模拟按顺序执行不同的操作?

以下代码:ObjectMappermapper=Mockito.mock(ObjectMapper.class);Mockito.doThrow(newIOException()).when(mapper).writeValue((OutputStream)Matchers.anyObject(),Matchers.anyObject());Mockito.doNothing().when(mapper).writeValue((OutputStream)Matchers.anyObject(),Matchers.anyObject());try{mapper.writeValue(n

java.lang.NoSuchMethodError : org. mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;

我正在使用Mockitojar为Groovy编写Junit测试用例,但它给了我以下异常:java.lang.NoSuchMethodError:org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;atorg.mockito.junit.MockitoJUnitRunner.(MockitoJUnitRunner.java:152)atsun.reflect.NativeConstructorAccess

java - mockito 中@InjectMocks 和@Autowired 用法的区别?

当我使用Mockito和Junit编写测试用例时,我使用了@InjectMocks作为要测试的类。在项目的其他部分,我还看到@Autowired被用于要测试的类。我什么时候可以使用@InjectMocks和@Autowired?当我们尝试将它们与要测试的类一起使用时,两者之间有什么区别? 最佳答案 @InjectMocks是一种Mockito机制,用于将test类中声明的字段注入(inject)到undertest类中的匹配字段中。它不要求被测类是Spring组件。@Autowired是Spring的注释,用于将beanAutowi

java - Mockito 在模拟方法的参数上调用方法

我刚开始使用Mockito,我只想做类似的事情:publicclassTest{publicvoidclearList(Listl){doVeryLOOOONGDatabaseCallll();l.clear();return;}}///...Testtest=mock(Test.class);Mockito.when(test.clearList(any(List.class))).then(l=>l.clear());有一些技巧吗?感谢您的帮助! 最佳答案 应该这样做(未测试):doAnswer(newAnswer(){publ

java - 在同一个对象上多次调用 Mockito.when?

当尝试将Mockito与Spring一起使用时,通过bean声明创建Mock对象......我在多次调用Mockito.when而不重置Mock对象时发现了一些奇怪的行为,例如:Mockito.when(this.accountMapper.createBadGrammarException()).thenThrow(newBadSqlGrammarException("Bla",null,newSQLException()));一旦在测试期间(在同一个模拟上)多次调用此代码(“Mockito.when”),测试就会失败并出现错误(BadSqlGrammerException,即使此异

java - Mockito when().thenReturn() 不能正常工作

我有一个具有2个函数的A类:函数a()返回一个随机数。调用a()并返回返回值的函数b()。在测试中我写了这个:Atest=Mockito.mock(A.class)Mockito.when(test.a()).thenReturn(35)assertEquals(35,test.a())assertEquals(35,test.b())测试在第二个断言处失败。有谁知道为什么吗?要清楚-这不是我的真实代码,而是解释我的问题的简单代码 最佳答案 由于A类是模拟的,所有方法调用都不会转到实际对象。这就是你的第二个断言失败的原因(我猜它可能

java - 在 Mockito 中,当顺序很重要时,验证同一方法的两次调用与中间的另一个方法调用

我认为这会起作用:InOrderinOrder=newInOrder(mock);inOrder.verify(mock).method1();inOrder.verify(mock).method2();inOrder.verify(mock).method1();...但是Mockito说不希望调用mock.method1()。想要1次,但被2次。我将代码更改为:inOrder.verify(times(2),mock).method1();inOrder.verify(mock).method2();它应该可以工作,但现在我没有测试我一开始想测试的东西。有人可以指出我做错了什么,

java - Mockito:基于另一个的模拟对象

我有一个模拟对象,比如Carporsche。它有4个轮子、1个挡风玻璃、1个发动机和名称Porsche。这是通过when()和thenReturn()完成的。我想创建另一个模拟的Car实例,比如trabant,它的行为(同样是when()和thenReturn())作为porsche实例,只会返回不同的名称。是否可以在第一个mock的基础上创建第二个mock而无需重复所有when()和thenReturn()步骤? 最佳答案 如何在您的测试中创建一个私有(private)方法来设置对给定模拟对象的普遍期望?

java - 使用 Mockito 的 When 方法发出问题

我正在努力自学Mockito。考虑下面的方法,hasInventory(),它不应该以我的思维方式真正运行,而是设置为返回true或false当我把我的测试关在松鼠笼里时。Warehouse类是我的“模拟依赖项”。publicclassWarehouseimplementsIWarehouse{privateMapinventory;publicWarehouse(){this.inventory=newHashMap();}publicfinalbooleanhasInventory(Stringitemname,intquantity)throwsInventoryDoesNotE

java - Mockito 空指针异常

我遵循了@hoaz的建议。但是,我得到空指针异常@RunWith(MockitoJUnitRunner.class)publicclassGeneralConfigServiceImplTest{@InjectMocksprivateGeneralConfigServicegeneralConfigService;@MockprivateSomeDaosomeDao;@MockprivateExternalDependencyClassexternalDependencyObject@TestpublicvoidtestAddGeneralConfigCallDAOSuccess(){