我尝试使用Android Support Test Library
(之前为android-test-kit)并为我的某个项目创建测试。它包含一些功能性的'代码和单个项目中的UI代码。
我的目的是使用JUnit4而不是与JUnit3混合,所以我使用AndroidJUnitRunner。 为“功能”创建了多个测试类。代码遵循JUnit4并且工作正常。
最近我开始实现UI组件的测试。参考documentation receipt已经实施了多项测试。这些活动测试遵循JUnit4样式,并根据上述文档扩展ActivityInstrumentationTestCase2
。
我现在面临的问题是:无法一次执行所有测试。如果我尝试从IntelliJ Idea运行package / all测试(Activity和'功能'在同一个项目中) - 只执行纯JUnit4测试。我怀疑问题出在ActivityInstrumentationTestCase2
,它扩展了TestCase
并且不是纯粹的JUnit4测试类。
是否有可能以某种方式在使用Android支持测试库(android-test-kit)的Activity测试中摆脱ActivityInstrumentationTestCase2并且所有测试都在运行?或者我对问题根源(关于TestCase
)的假设是错误的?
答案 0 :(得分:3)
InstrumentationTestCase
,ActivityTestCase
和ActivityInstrumentationTestCase2
,而应使用ActivityTestRule。 InstrumentationRegistry对于获取应用程序上下文和检测实例也很有用。
答案 1 :(得分:1)
最后找到了唯一可行的解决方案:将InstrumentationTestCase
,ActivityTestCase
和ActivityInstrumentationTestCase2
从AOSP源复制到我的项目中。之后,从InstrumentationTestCase
的{{1}}中删除继承。在此项目中完成的方式相同(AndroidJunit4)。
实际上不需要TestCase
,这些更改和documentation receipt足以使活动测试成为JUnit4并避免混合问题。