2016-04-30 81 views
0

试图学习仪器测试场景。在阅读ActivityInstrumentationTestCase2的相关文档时,我了解到我们可以使用ActivityInstrumentationTestCase2Espresso一起编写所谓的“功能”测试。或者至少这是我从相关文件中了解到的。Android测试框架说明

但是我遇到了一个叫ActivityUnitTestCaseServiceTestCase的东西,这是我从未听说过的。试图弄清楚这一点让我失望了,现在我非常迷失在这里,对整个Android测试范例有如此多的争议。

  1. 从高级别的Android测试大致分为两个水桶考虑:Unit testingfunctional testing。以下哪个属于哪个?

    JUnitJUnit4TestCaseAndroidTestCaseActivityInstrumentationTestCase2ServiceTestCaseApplicationTestCaseAndroidTestRunnerAndroidJUnitRunnerAndroidJUnit4

  2. 应该怎么用时?

  3. 它们中的任何一个都与实际的单元测试有关(我指的是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/

Android Test Frameworks

Robolectric vs Android Test Framework

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

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

回答

1

什么时候应该使用?

您列出的大部分内容已被弃用。 JUnit4,使用AndroidJUnitRunner,是唯一积极用于新开发的项目。

其中的任何涉及到实际的单元测试(我指的是POJO测试)

如今,在Android的条款,“单元测试”是指“用嘲讽的框架运行JUnit4测试,也许,在开发机器或CI服务器的JVM上“。 JUnit4用于此,还有Mockito,Robolectric等。

将此与“仪器测试”进行对比,意思是“在Android设备或仿真器上运行JUnit4测试,可能使用Espresso和/或UiAutomator”。 JUnit4仍然在这里使用,在这里你可以访问常规的Android SDK。 UiAutomator用于集成测试(App A是否成功启动App B的活动?)。

请记住,“单元测试”和“仪器测试”之间的这种特殊分隔是相当新颖的。您阅读的材料比2015年中期更早,可能会互换使用这些术语,因为我们没有对现在称为单元测试的官方支持(尽管很多开发人员在此之前也使用Robolectric来实现此目的)。

+0

我明白了,所以其要点是:对于Android = Junit4 + Mocks等单元测试以及Android = JUnit4 + Robotium/Espresso等的功能/仪器测试,是否正确? – user2511882

+0

@ user2511882:我对你使用“功能”(这是一个有点无定形的术语恕我直言)怀疑,但否则,是的,这是正确的。 – CommonsWare

+0

好的。这当然有助于所有的malarkey。谢谢! – user2511882