灰盒测试的经验法则
白盒测试的问题在于它会产生高耦合。一个可能的解决方案是进行灰盒测试,而不是白盒测试。这是一种黑白盒测试的结合。你实际上是在测试你的单元的行为,就像在白盒测试中一样,但通常你让它成为实现不可知的在可能的情况下。在可能的情况下,你会像在黑盒情况下那样检查,只是断言输出是你期望的结果。所以,你问题的本质是什么时候是可能的。< / p >
这真的很难。我没有一个很好的例子,但我可以给你们举几个例子。在上面提到的equals() vs equalsIgnoreCase()的情况下,您不应该调用Mockito.verify(),只需断言输出。如果你做不到,就把你的代码分解成更小的单元,直到你能做到为止。另一方面,假设您有一些@Service,并且您正在编写@Web-Service,它本质上是@Service的包装器——它将所有调用委托给@Service(并进行一些额外的错误处理)。在这种情况下,调用Mockito.verify()是必要的,你不应该重复你对@Serive所做的所有检查,验证你用正确的参数列表调用@Service就足够了。