尝试学习仪器测试方案。在查看ActivityInstrumentationTestCase2
的相关文档时,我了解到我们可以将ActivityInstrumentationTestCase2
与Espresso
结合使用来编写所谓的“功能”测试。或者至少这是我从相关文档中理解的。
然而,我遇到了一个名为ActivityUnitTestCase
和ServiceTestCase
的东西,这是我以前从未听说过的。试图弄清楚这一点让我陷入了疯狂的追逐之中,现在我非常迷失于整个Android测试范例的许多措辞。
从较高的层面考虑Android测试大致分为两个部分:Unit testing
和functional testing
。以下是其中的一部分。
JUnit
,JUnit4
,TestCase
,AndroidTestCase
,ActivityInstrumentationTestCase2
,ServiceTestCase
,ApplicationTestCase
,AndroidTestRunner
,AndroidJUnitRunner
,AndroidJUnit4
什么时候应该使用?
它们中的任何一个都与实际的单元测试有关(我的意思是POJO测试)。我问这个因为我注意到一些教程链接,其中示例测试用例扩展JUnit4
/ TestCase
并且仍被称为单元测试,而下面的链接之一根本没有任何扩展,仍然有效作为一个简单的POJO
测试用例。这引出了一个问题:JUnit4
和简单POJO
测试类之间究竟有什么区别。
我到目前为止已经检查过的参考文献:
http://www.vogella.com/tutorials/AndroidTesting/article.html#androidtesting_creatingtestfolders
https://shaun.church/unit-testing-java-classes-in-android-studio/
Robolectric vs Android Test Framework
http://developer.android.com/tools/testing/testing_android.html
任何想法,提示非常感谢。谢谢!
答案 0 :(得分:1)
什么时候应该使用?
您列出的大多数内容已弃用。使用AndroidJUnitRunner
的JUnit4是唯一积极用于新开发的项目。
它们中的任何一个都与实际的单元测试有关(我指的是POJO测试)
如今,在Android术语中,"单元测试"意味着"在您的开发机器或CI服务器的JVM上运行JUnit4测试,可能还有模拟框架"。 JUnit4用于此,可能还有Mockito,Robolectric等。
将此与#34;仪器测试"进行对比,这意味着"在Android设备或模拟器中运行JUnit4测试,可能使用Espresso和/或UiAutomator"。 JUnit4仍然在这里使用,在这里您可以访问常规的Android SDK。 UiAutomator用于集成测试(App A是否成功启动了App B&#39的活动?)。
请记住,"单元测试之间的这种特殊分裂"和"仪器测试"是相当新的。您阅读的材料比2015年中期更早,可能会互换使用这些术语,因为我们没有官方支持现在所谓的单元测试(尽管在此之前很多开发人员也为此目的使用了Robolectric)。