Android 与等效仪器测试相比,Robolectric的运行时间较慢
在过去,我一直将所有的android测试用例作为工具测试来编写,以避免模拟android特定库的问题,但是我知道这不是最佳实践。为了符合最佳实践,我尝试将我的一个电子邮件验证器测试用例从仪器测试转换为单元测试 我已经成功地进行了转换,但是当我比较运行时间时,单元测试要慢得多(单元测试为6.62s,而仪器测试为0.52s)。值得注意的是,在emulator上安装APK确实需要5秒的时间,这在测试运行报告中没有说明。然而,这仍然意味着单元测试需要额外的一秒钟才能运行 我的理解是,单元测试应该总是比仪器测试快,我想理解为什么我在这里没有看到这一点 仪器测试和单元测试的测试用例是相同的。唯一的区别是包结构,在单元测试类的顶部我有Android 与等效仪器测试相比,Robolectric的运行时间较慢,android,unit-testing,robolectric,android-instrumentation,Android,Unit Testing,Robolectric,Android Instrumentation,在过去,我一直将所有的android测试用例作为工具测试来编写,以避免模拟android特定库的问题,但是我知道这不是最佳实践。为了符合最佳实践,我尝试将我的一个电子邮件验证器测试用例从仪器测试转换为单元测试 我已经成功地进行了转换,但是当我比较运行时间时,单元测试要慢得多(单元测试为6.62s,而仪器测试为0.52s)。值得注意的是,在emulator上安装APK确实需要5秒的时间,这在测试运行报告中没有说明。然而,这仍然意味着单元测试需要额外的一秒钟才能运行 我的理解是,单元测试应该总是比仪
@RunWith(roblectricttestrunner.class)
@配置(sdk=28)
对于这个测试用例,我没有使用任何阴影为什么您需要roboelectric进行单元测试?在这种情况下,我需要用于
android.text.TextUtils
mocking的robolectric不要将android类与业务逻辑混用,这样您就不会有这个问题。让你的包装器围绕着TextUtils
并在单元测试中模拟它。你不能把它命名为单元测试,因为它仍然在引擎盖下模拟整个android。我不确定,但如果你尝试在配置中说manifest=NONE
我可能认为它会更快。为什么你需要roboelectric进行单元测试?在这种情况下,我需要roboelectric对于android.text.TextUtils
mocking,不要将android类与业务逻辑混合使用,这样就不会有这个问题。把你的包装器做成TextUtils
并在单元测试中模拟它。你不能把它命名为单元测试,因为它仍然在模拟整个android。我不确定,但如果你在配置中尝试说manifest=NONE
,我可能会认为它会更快