当我将@Secured添加到服务类中的任何方法并测试服务类时,我的模拟没有被提取。当我测试一个不安全的方法时,甚至会发生这种情况。我不明白是否是由于模拟没有被使用或被覆盖。
git rebase -i
案例1: 我在没有@Secured on method2的情况下测试method1(testMethod1),一切正常。我的预期结果与Mock dao返回的结果相符。
案例2 我将@Secured添加到method2并重新运行testMethod1。测试完成但结果与Mock dao不匹配。已使用实际dao,实际结果与数据库数据匹配。
我使用DEBUG语句在ServiceTest类和Service类中打印dao的哈希码。在案例1中,它们是相同的。在案例2中,它们是不同的。
显然,当我添加@Secured时会发生一些事情。我想知道那是什么。
答案 0 :(得分:1)
假设您正在使用SpringJUnit4ClassRunner
,区别可能是Spring正在您的服务周围创建代理以处理@Secured
注释,而Mockito无法处理代理中的dao注入。
顺便说一下,@Asynchronous
,@Transactional
和co。
我建议使用MockitoRunner(忘记Spring),或者,如果你真的需要将Spring和Mockito结合起来,请使用springockito