我的单元测试失败,android.util.Log中的方法d没有被模拟,但只有当我运行testDebug。 如果运行testRelease一切正常,并且它们正确传递。 有谁知道为什么会发生这种情况? 从控制台和Android Studio运行gradle时会发生同样的情况。Android单元测试失败调试生成类型
5
A
回答
1
下面是我解释这个如何为将来的参考。 测试工作在调试但未发布的问题是由于Log.d(以及来自android框架的朋友)未正确模拟的事实。 构建为发布版时,其工作原因是我们的日志记录基于build config中的此属性进行了有条件的处理。基本上我们有if(BuildConfig.type!=“Release”)Log.d(...),并且由于编译器因最终值而删除了该块,所以在测试发布时它不会被调用。 模拟静态方法Log.d我使用了PowerMock。嘲笑很容易,但设置Power Mock真的很麻烦,所以可能会有更多的方法来做到这一点。
0
结帐"Method ... not mocked"在Android Studio项目网站上的链接。 它说:
用来运行单元测试不包含任何实际的代码的android.jar文件 - 由Android系统的图像在实际设备上提供。相反,所有方法都会引发异常(默认情况下)。这是为了确保您的单元测试只测试您的代码,并且不依赖于Android平台的任何特定行为(您未明确嘲笑例如使用Mockito)。如果这个被证实有问题的,你可以在下面添加片段到您的build.gradle改变这种行为:
build.gradle
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
我们都知道,默认行为使用类,如日志或文本实用程序,并就当是有问题评估未来版本中的可能解决方案
我刚刚使用上述摆脱了现在的例外。
相关问题
- 1. 简单的android单元测试失败
- 2. Android单元测试在调试中失败,否则通过
- 3. Android:如何使单元测试失败
- 4. Grails单元测试失败
- 5. mystyfing单元测试失败
- 6. 单元测试不失败
- 7. Umbraco单元测试失败
- 8. 单元测试Assert.AreEqual失败
- 9. 单元测试失败8
- 10. Ruby单元测试 - 访问测试结果(成功/失败)?
- 11. CGFloat导致iPhone单元测试捆绑失败生成
- 12. Grails的生成单元测试失败的一代
- 13. C#单元测试生成
- 14. 为什么大型Android活动单元测试失败?
- 15. 当结果类型为瓦时,单元测试失败
- 16. 简单方程失败单元测试
- 17. Android单元测试枚举类型
- 18. VS2010中的单元测试 - “调试”通过,“运行”失败
- 19. 单元测试失败时不处于调试模式
- 20. Android单元测试:由于类错误导致仪表失败
- 21. 单元测试:在父测试类中生成被测单元的模拟
- 22. CruiseControl.rb:测试失败,但生成传递
- 23. visual studio调试单元测试集成
- 24. Android的单元测试运行所有类的测试失败,但每个单独的方法成功运行
- 25. 单元测试android类
- 26. Android:测试改造成功,失败
- 27. 测试失败时生成nunit测试结果
- 28. Rspec单元测试用例失败
- 29. 随机单元测试失败
- 30. 单元测试失败,出现sys.exit