Android测试框架说明

时间:2016-04-30 20:11:19

标签: java android unit-testing junit

尝试学习仪器测试方案。在查看ActivityInstrumentationTestCase2的相关文档时,我了解到我们可以将ActivityInstrumentationTestCase2Espresso结合使用来编写所谓的“功能”测试。或者至少这是我从相关文档中理解的。

然而,我遇到了一个名为ActivityUnitTestCaseServiceTestCase的东西,这是我以前从未听说过的。试图弄清楚这一点让我陷入了疯狂的追逐之中,现在我非常迷失于整个Android测试范例的许多措辞。

  1. 从较高的层面考虑Android测试大致分为两个部分:Unit testingfunctional testing。以下是其中的一部分。

    JUnitJUnit4TestCaseAndroidTestCaseActivityInstrumentationTestCase2ServiceTestCaseApplicationTestCaseAndroidTestRunnerAndroidJUnitRunnerAndroidJUnit4

  2. 什么时候应该使用?

  3. 它们中的任何一个都与实际的单元测试有关(我的意思是POJO测试)。我问这个因为我注意到一些教程链接,其中示例测试用例扩展JUnit4 / TestCase并且仍被称为单元测试,而下面的链接之一根本没有任何扩展,仍然有效作为一个简单的POJO测试用例。这引出了一个问题:JUnit4和简单POJO测试类之间究竟有什么区别。

  4. 我到目前为止已经检查过的参考文献:

    http://www.vogella.com/tutorials/AndroidTesting/article.html#androidtesting_creatingtestfolders

    https://shaun.church/unit-testing-java-classes-in-android-studio/

    Android Test Frameworks

    Robolectric vs Android Test Framework

    http://developer.android.com/tools/testing/testing_android.html

    任何想法,提示非常感谢。谢谢!

1 个答案:

答案 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)。