android studio instrumentationtestcase,Android Instrumentation测试和Android Studio中的单元测试之间的区别?...

从Android Studio 1.1rc开始,有单元测试支持和

我想知道Android Instrumentation测试和单元测试之间有什么区别。

据我了解:

单元测试对于测试不调用Android的代码很有用

API和Android工具测试相当集成

测试以测试特定于Android API的元素或GUI组件。

但是,如果您在自己的系统中使用Robolectric或Mockito之类的框架,

单元测试,如果我没记错的话,可以测试Android代码(无需设备)。

这是正确的,还是有更大的区别? 如果是这样,每个有什么用?

在我看来,仪器测试是集成测试,具有控制应用程序的生命周期和事件(onStart,onCreate等)的能力。

据我了解,单元测试正在测试单元(例如类)的数据和行为。

例如,假设您有一个游戏:该游戏在一个活动(主要活动)上运行,并且您有一个基于Robot类的角色,该角色具有2种方法(射击和移动)。您可以使用工具测试来测试主要活动,以查看退出应用程序时是否正确保存了该主活动,如果在还原应用程序时可以正确地对其进行了还原等,并且可以使用单元测试来测试Robot,以测试其属性和行为。

免责声明:我不是Java语言的人,但是我对您的问题很感兴趣,并根据在线上的次要搜索回答了该问题。您可能必须对此进行更深入的研究才能找到更详细的答案。

单元测试隔离了被测试的组件,这就是为什么经常将Mocks框架与Mockito一起使用的原因:因为将单元与其依赖项隔离开来。请注意,您所说的关于Android API的说法部分正确,因为还存在Instrumented Unit测试,即Instrumentation也是Junit包的一部分,并且将TestCase扩展为类AndroidTestCase的类也是Junit包的一部分,但允许使用A)Context(可以使用getContext()调用)和B)作为Android API一部分的资源!另外,请考虑AndroidTestCase是基类,还有一些其他非常有用的类可以扩展该类。他们专门测试加载程序,ContentProviders甚至服务,并且他们可以访问Android API。因此,这些类提供了JUnit测试框架以及特定于Android的方法。现在,借助Junit4,有一个ServiceTestRule直接从Object扩展,并且使您可以更轻松地测试Service,尽管您不能直接在此类内启动Intent。

工具测试也包含在Junit软件包中,但是Android API的控制是完全完全的,因为工具测试在运行任何应用程序代码之前已在系统中实例化,并且要测试您需要打开真实的应用程序(模拟器或电话)通过USB连接)。他们可以访问android组件(例如单击一个按钮)并延长应用程序的生命周期,通常比Junit测试(用于扩展TestCase的测试)(上面检查的测试)要慢,典型的用法是使用ActivityInstrumentationTestCase2,它具有功能测试方法,面向用户。

编辑:关于Roboelectric和Mockito,它们是当下(2016年7月13日)在最受欢迎的测试框架之间与Espresso结合使用的,

Roboelectric允许您在几秒钟内而不是几分钟内运行多个测试,这对于必须运行连续测试并且需要持续集成的团队来说非常方便。

从Robolectric网站:

An alternate approach to Robolectric is to use mock frameworks such as

Mockito or to mock out the Android SDK. While this is a valid

approach, it often yields tests that are essentially reverse

implementations of the application code.

Roboelectric allows a test style that is closer to black box testing,

making the tests more effective for refactoring and allowing the tests

to focus on the behavior of the application instead of the

implementation of Android. You can still use a mocking framework along

with Robolectric if you like.

Mockito也可以与Junit一起使用,实际上是在必须管理最终类,匿名类或原始类型时使用。

单元测试

Unit tests that run on your local machine only. These tests are

compiled to run locally on the JVM to minimize execution time. Use

this approach to run unit tests that have no dependencies on the

Android framework or have dependencies that mock objects can satisfy.

因此,基本上,您运行普通的Java代码来测试例如内容提供程序,数据库连接,方法的输入和输出。这不能在Android上运行。要运行它,您不需要设备。

仪器测试

Unit tests that run on an Android device or emulator. These tests have

access to Instrumentation information, such as the Context of the app

under test. Use this approach to run unit tests that have Android

dependencies which mock objects cannot easily satisfy.

因此,它模拟了用户将如何使用实际应用程序,因此您需要一个设备(物理设备或仿真器)来运行它。它可以访问视图,活动,上下文等。

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

单元测试

它仅在本地计算机上运行。

仪器测试用例

它运行在android设备或模拟器上。如果您检查测试用例,则它运行在模拟器或android设备上

单元测试:

通常,单元测试称为"本地测试"或"本地单元测试"。造成这种情况的主要原因似乎是您希望能够在不连接设备或仿真器的情况下运行测试。

单元测试不能在不模拟活动(例如Activity)等对象的情况下为您的应用测试UI。

仪器测试:

仪器测试在设备或仿真器上运行。在后台,将安装您的应用程序,然后还将安装测试应用程序,该应用程序将控制您的应用程序,启动它并根据需要运行UI测试。

工具测试也可以用于测试任何UI逻辑。当您需要测试依赖于上下文的代码时,它们特别有用。

参考链接示例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值