相关疑难解决方法(0)

不鼓励在同一领域使用@ Spy和@InjectMocks吗?

在我正在进行的项目中,我经常在一个领域看到@Spy@InjectMocks一起使用.但我从未在任何教程或其他资源中看到过这种方式.我在谷歌搜索了这个特定的组合,但除了GitHub上的这个帖子之外没有找到任何其他内容:https: //github.com/mockito/mockito/issues/169

这让我觉得我们正在以一种奇怪的方式使用它.

注意:我认为同时使用两个注释的原因有时是因为如果您只使用@InjectMocksMockito尝试使用no-args构造函数实例化该类.但是如果没有no-args构造@Spy函数并添加,则可以使用该对象而无需空构造函数.

编辑:另一个重要用途是,如果只使用两个注释,则只能存根方法.

java mocking mockito

24
推荐指数
2
解决办法
3万
查看次数

在同一个对象上多次调用Mockito.

当试图使用Spring的Mockito时,通过bean声明创建Mock对象......

<bean id="accountMapper" class="org.mockito.Mockito" factory-method="mock"> 
    <constructor-arg value="org.example.persistence.mybatis.mappers.AccountMapper" /> 
</bean>     
Run Code Online (Sandbox Code Playgroud)

...我在调用Mockito时发现了一些奇怪的行为.多次没有重置Mock对象,例如:

Mockito.when(this.accountMapper.createBadGrammarException()).thenThrow(new BadSqlGrammarException("Bla", null, new SQLException()));
Run Code Online (Sandbox Code Playgroud)

一旦在测试期间(在同一模拟器上)多次调用此代码("Mockito.when"),测试就会失败并出现错误(BadSqlGrammerException,即使此异常是实际预期的 - 我确实失败了如果我不抛出异常,并手动抛出它工作正常).这是预期的行为吗?Mockito似乎建议每次创建一个新的模拟,这意味着为每个方法创建DAO ......?

当我两次调用Mockito.when方法时到底发生了什么?模拟应该如何反应?替换行为?忽略它?不幸的是,大多数搜索仅产生如何为方法本身的多次调用返回不同结果的结果,但不会产生多次调用Mockito所期望的结果.当...

我只是想在这里了解Mockito和最佳实践,因为只是因为它看起来很有效,所以选择一些东西似乎是一个坏主意......

java spring unit-testing mockito

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

mockito ×2

mocking ×1

spring ×1

unit-testing ×1