Android Mockito lenient()何时使用

Android Mockito lenient()何时使用,android,unit-testing,mockito,android-junit,Android,Unit Testing,Mockito,Android Junit,据我所知,lencient使strictstubing引发的异常静音。基于此,lencient不应该使用,可能只是在执行TDD时临时使用,因为严格的存根异常通常意味着您的代码错误、测试设计不当或添加了不必要的行 是否有一个实际的场景,在这个场景中,lenient对于测试来说确实是必要的或有用的?例如,如果您需要在短时间内完成从Mockito 1到Mockito 2的迁移(后者引入了严格的存根),它非常有用。我刚刚发现了一个非常有效的用法。我们对代码进行了更改,默认情况下禁用了一个特性(在将来的版

据我所知,
lencient
使strictstubing引发的异常静音。基于此,
lencient
不应该使用,可能只是在执行TDD时临时使用,因为严格的存根异常通常意味着您的代码错误、测试设计不当或添加了不必要的行


是否有一个实际的场景,在这个场景中,
lenient
对于测试来说确实是必要的或有用的?

例如,如果您需要在短时间内完成从Mockito 1到Mockito 2的迁移(后者引入了严格的存根),它非常有用。

我刚刚发现了一个非常有效的用法。我们对代码进行了更改,默认情况下禁用了一个特性(在将来的版本中将其完全删除之前)。我们需要一个测试来证明禁用实际上是有效的,所以我们需要模拟一些标志为false。然而,我们还需要模拟一些其他值,因为如果禁用该功能(测试该标志)的代码位以某种方式被破坏,该功能的默认设置将导致它无论如何都不做任何事情,因此我们将无法观察到该标志的失败


总结一下:在成功案例中,我们会得到不必要的模拟异常,但如果没有它,失败案例实际上不会失败。因此,我们将这些特定的模拟标记为宽松。

引入了严格的存根,以检测不必要的存根,并编写更干净的测试。
如果您遇到异常,则应将重点放在改进测试用例上,而不是绕过严格的存根检查。

Mockito 1非常古老!(2016)2016不是老lol。例如,有大量的企业应用程序仍然在Java 7左右,尤其是在银行业,更不用说特定的库。此外,许多人更喜欢只使用
Spring-Boot依赖项
BOM全面迁移他们的Spring-Boot项目,BOM的第一个版本(2019年8月发布)包含Mockito 1。别忘了官僚主义,它总是拖慢任何升级计划。欢迎来到企业版)根据问题标签,你更多的是关于android的开发——ofc,升级这类应用更容易(移动应用通常更小)。但即使在这种情况下,请记住,正如我所记得的,Java 8的支持是在2017年才添加的。