Android Instrumentation测试和Android Studio中的单元测试之间的区别?

Joen93:

自Android Studio 1.1rc起,提供了单元测试支持,我想知道Android Instrumentation Tests和Unit测试之间有什么区别。

据我了解:
单元测试对于测试不调用Android API的代码很有用,而Android工具测试则是用于测试特定于Android API的元素或GUI组件的集成测试。

但是,如果在单元测试中使用RobolectricMockito之类的框架,那么如果我没有记错的话,可以测试Android代码(无需设备)。


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

trocchietto:

单元测试隔离了被测试的组件,这就是为什么经常将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网站:

Robolectric的另一种方法是使用模拟框架(例如Mockito)或模拟出Android SDK。尽管这是一种有效的方法,但它通常会产生实质上是应用程序代码的反向实现的测试。Roboelectric允许一种更接近黑盒测试的测试样式,从而使测试对重构更为有效,并使测试着重于应用程序的行为而不是Android的实现。如果愿意,您仍然可以将模拟框架与Robolectric一起使用。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Android Studio中的Android Instrumentation测试和单元测试之间共享代码

在Android Studio中创建单元测试

如何在Android中的单元测试和仪器测试之间共享资源?

Android 中的单元测试

Android中的单元测试?

Android Studio Instrumentation测试构建版本

Android Studio单元测试中的Assets文件夹

Android Studio 中的单元测试出现错误

在Android Studio中运行所有单元测试

Visual Studio 2017中的Xamarin(Android)单元测试

Flutter 在 Android Studio 中运行多个单元测试

无法在Android Studio中运行单元测试

单元测试配置在Android Studio 3.1中中断

使用Android Studio和Gradle进行单元测试?

Android单元测试

Android Instrumentation测试-UI线程问题

用于清单视图的android Instrumentation测试

Android中的单元测试isNetworkAvailable()

单元测试Android Activity中的方法

Hamcrest中的NoSuchMethodError与Android单元测试

Android中单元测试的奇怪行为

单元测试Android,资源中的getString

Android Instrumentation在使用AndroidJunitRunner和AndroidJUnit4时测试java.lang.UnsatisfiedLinkError

在Android Studio中配置测试文件夹以进行单元测试

在Android Studio中运行参数化单元测试时,找不到给定的测试包含错误

找不到类:在Android Studio中运行单元测试时,测试套件为空

Android Studio测试文件夹未出现在单元测试工件中

Android单元测试跳过测试类中的行

Android 单元测试领域