使用Android Test Framework

Android提供各种测试

AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase

我需要知道如何确定哪个软件包最适合测试我的应用程序。 此链接提供了一些信息

http://developer.android.com/reference/android/test/package-summary.html

但是我需要更清楚……

Solutions Collecting From Web of "使用Android Test Framework"

TestCase – 普通的旧JUnit测试用例。 它可以扩展为测试与Android框架无关的实用程序类。

AndroidTestCase – 它扩展了JUnit的TestCase。 与ActivityTestCase相比,它是一个更轻的测试类。 它不需要启动活动来运行它。 它的getContext()方法允许您在需要时获取注入的上下文。 由于您可以从此类获取上下文,因此可以对UI对象进行膨胀以测试其行为。

ActivityInstrumentationTestCase2 – 它是ActivityInstrumentationTestCase的较新版本。 Android SDK 1.5中不推荐使用ActivityInstrumentationTestCase。 与AndroidTestCase相比,它是一个更重的测试类。 它为单个活动提供UI和function测试。 您可以通过调用getActivity()方法获取正在测试的注入活动。 正在测试的活动在每次测试之前和之后启动并完成。

ActivityUnitTestCase – 它为测试活动提供隔离环境。 使用它来测试活动时,活动不会附加到系统。 这使您可以更好地控制要在其中测试活动的环境types。

ApplicationTestCase – 它提供对Application类的测试。 它可用于测试应用程序的生命周期。

InstrumentationTestRunner – 运行Android测试用例的跑步者。

我刚发现这个……希望这对其他人有帮助……如果你想要更多细节,比如何时以及如何使用,请参阅android SDK中samples目录中的APIDemos测试应用程序。

请参阅我自己使用PowerPoint绘制的类层次结构图。

接受的答案提供了足够的单词信息。 我只是用图表来说清楚:)

对于InstrumentationTestCase @Zorb问,它是ActivityTestCase的父类。 它使您可以调用getInstrumentation方法来获取检测实例,以便您可以操作应用程序,活动等。

我自己绘制的类层次结构图

介绍

为了澄清您的问题并配置您要求的课程,必须将测试分为两类。 JUnit测试 (理论上是普通Java)和Instrumentation测试 (它们也是JUnit测试包的一部分,但允许您测试更多与SDK相关的SDKfunction)。

传统的JUnit测试隔离了一段代码并运行测试。 Instrumentation测试访问更多包含android组件。 但是仪器测试也会从JUNIT PACKAGE中获得,尽管它们甚至在任何应用程序代码运行之前都在系统中实例化,这解释了为什么速度较慢,而且它们需要一个模拟器或电话来运行您正在测试的应用程序。

(跟随你所提到的所有课程中的Bold,但是如果没有大胆的角色,我会写下更多的其他课程)。

****第一部分**(Junit测试)**

A)扩展TextCase的Junit测试(通常比Instrumentation快,并且与Mock framweworks结合得很好)

AndroidTestCase :它允许访问您正在测试的Activity及其资源的Context,它是扩展更专业的子类的基类,是访问数据库,文件系统数据的理想选择。 您可以轻松调用getContext()并访问资源,而无需与Instrumentation测试建立与活动的直接联系。

ApplicationTestCase控制文本应用程序的环境,主要是上下文和生命周期。 AndroidTestCase的其他非常有用的扩展允许您控制加载器,服务和内容提供者,但由于某种原因,仍然没有任何广播接收器可以使用方法InstrumentationRegistry.getTargetContext()[间接] [1]调用它然后实例化BroadCastReceiver 。 使用Junit的不同Mock框架通常比InstrumentationTests更快

-.-。-。-。-。-。-。-。 –

****第二部分**(仪器测试)**

B)扩展TestCase的仪器测试被认为是function测试,更侧重于确保它们与用户端一起工作,MVC的View部分。它们通常比其他提到的类别慢

InstrumentationTestCase是一个基类,可用于向UI发送键事件以模拟QWERTY键盘键或DPAD按钮,还可以启动必须测试的Activity,甚至Intents

ActivityTestCase通常不是单独使用的,它只是具有子类的公共代码,但是如果你不满意inheritance自这个类的3个类(见下文),就像一个新的未来组件,你可以在时间使用它不存在专用的TestCase类。

ActivityInstrumentationTestCase2是最常用的Instrumentation类,用于编写function测试,从构造函数调用Activity的实例进行测试。 基本上你用getActivity()调用活动,你可以实际运行该Activity的任何方法。

不推荐使用ActivityInstrumentationTestCase,并且虽然在Instrumentation下面的ActivityUnitTestCase更类似于unit testing

我发现droidcon 09的这个教程非常有用。 完整的可下载工作源代码示例。

编辑:正如评论中所指出的,链接似乎已经死了。

它首先使用ActivityInstrumentationTestCase2,TestCase和AndroidTestCase创建一个Celcius到Fahrenheit温度转换器测试。