我有一个包含三个命名的@resource成员的类,如下所示:
@Resource(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator paginationRequestValidator;
@Resource(name = "integerMaxPaginationRequestValidator")
private PaginationRequestValidator integerMaxPaginationRequestValidator;
@Resource(name = "contactsSearchResultPaginationRequestValidator")
private PaginationRequestValidator contactsSearchResultPaginationRequestValidator;
从1.8.5升级到Mockito 1.9.5后,测试开始失败。测试套件仅模拟了一次PaginationRequestValidator,如下所示:
@Mock
private PaginationRequestValidator mockPaginationRequestValidator;
这导致只有三个实例中的第三个被注入,如下sysout所示:
paginationRequestValidator (contactsPaginationRequestValidator) is null
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is null
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is mockPaginationRequestValidator
显然,两个版本之间的行为发生了变化。我假设旧版本将mock注入到所有三个字段中--这对我来说仍然是一个可以接受的解决方案。
作为一个聪明人,我想我可以通过提供与资源相关联的名称来通过测试,如下所示:
@Mock(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator mockPaginationRequestValidator;
这导致了相似但微妙不同的结果。第三个字段(不是预期的目标字段)被嘲弄,如上所示,而是使用@mock中提供的名称来嘲弄它。参见SYSOUT:
paginationRequestValidator (contactsPaginationRequestValidator) is null
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is null
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is contactsPaginationRequestValidator
这完全是意料之外的行为。然而,还有更多。当我为第二个字段添加类似的mock时,所有字段都以预期的方式结束:
@Mock(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator mockPaginationRequestValidator;
@Mock(name = "integerMaxPaginationRequestValidator")
private PaginationRequestValidator mockIntegerMaxPaginationRequestValidator;
SYSOUT:
paginationRequestValidator (contactsPaginationRequestValidator) is contactsPaginationRequestValidator
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is integerMaxPaginationRequestValidator
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is null
虽然这与我所期望的完全一样,但它似乎与之前的尝试完全矛盾。
我有解释这种行为的文档,但它没有建议将相同的mock注入到所有三个中。这是可能的,还是我必须创建多个模拟,然后更改单个测试用例以使用“正确的”模拟?
测试套件使用@InjectMocks注释。
我想模拟Date对象的构造函数。但它并没有像我预期的那样工作<假如我有这样的服务。 我写了下面的测试 结果是: 组织。opentest4j。断言失败错误: 预计时间:2020年2月1日星期六00:00:00 CST实际时间:2022年5月9日星期一18:35:05 CST mock之后,服务将返回mockDate对象。但事实并非如此。有趣的是,如果我在测试中而不是在服务中调用新日期,我会得到正确的
我正在为一个具有2级依赖注入的类编写一个测试用例。我对1级依赖项注入对象使用@Spy注释,我想模拟第2级注入。但是,我在第二级上不断遇到空指针异常。有没有办法将模拟注入@Spy对象?
我正在使用JUnit和Mockito库来测试我的应用程序。问题是,当我在代码下面执行时,值在运行时没有返回空列表,并且测试失败。理想情况下,当get执行时,它应该返回空列表 我热切期待着支持。有没有人能帮我一下,如何通过这个测试用例???。如何通过Mockito使第8行的控件通过测试用例??? 请假设,下面两个类没有真实的代码,我们只有二进制文件作为JAR文件,我们不能修改下面的代码....我附上
我有一个jsf spring应用程序,并使用mockito进行单元测试。在模拟中运行测试时,我一直得到。对于不存在。 要嘲弄的方法 我的JUnit测试是用注释的
我正在使用请求有效负载中的对象数组调用API,我在@Request estBody中添加了@有效注释以检查是否有任何空属性在我的有效负载中发送。我希望我正在发送的任何空数据都应该抛出错误。但我的代码没有抛出错误 下面是我的实体课 这是我的控制器类 验证依赖项 我的请求有效负载 当我发送上述有效负载时,我希望抛出一个错误,因为我没有发送不为null的性别,但spring没有抛出任何错误。 我是否错过
我试图用Mockito mock对象替换对象。通常的方法是使用Springockito使用xml: 目前,我正在尝试使用Spring的JavaConfig来完成这项工作。突然之间,Java表达式比xml要详细得多: 我发现了一个名为Springockito annotations的库,它允许您执行以下操作: 显然,更漂亮:)唯一的问题是,这个上下文加载器不允许我对其他bean使用和JavaConf