使用Androidtesting框架

Android为testing提供了各种软件包

AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase

我需要知道如何决定哪个软件包最适合testing我的应用程序。 一些信息提供在这个链接

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

但是我需要更多的清晰度

TestCase – 普通的旧JUnittesting用例。 它可以扩展到testing不绑定到Android框架的实用工具类。

AndroidTestCase – 它扩展了JUnit的TestCase。 与ActivityTestCase相比,这是一个较轻的testing类。 它不需要启动一个活动来运行它。 它的getContext()方法允许你获得一个注入的上下文,如果你需要一个。 既然你可以从这个类中获得一个上下文,你可以通过膨胀你的UI对象来testing他们的行为。

ActivityInstrumentationTestCase2 – 这是ActivityInstrumentationTestCase的更新版本。 ActivityInstrumentationTestCase在Android SDK 1.5中已被弃用。 与AndroidTestCase相比,这是一个更重的testing类。 它为单个活动提供UI和functiontesting。 您可以通过调用getActivity()方法来获取您正在testing的注入活动。 正在testing的活动在每次testing之前和之后启动并完成。

ActivityUnitTestCase – 它给被testing的活动一个孤立的环境。 当使用它来testing活动时,活动不会附加到系统上。 这使您可以更好地控制您希望testing活动的环境。

ApplicationTestCase – 它提供了对Application类的testing。 它可以用来testing应用程序的生命周期。

InstrumentationTestRunner – 运行Androidtesting用例的跑步者。

我只是发现这..希望这有助于其他人…如果你想要更多的细节,如何时,以及如何使用,请参阅Android SDK中samples目录中的APIDemostesting应用程序。

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

被接受的答案用文字给出足够的信息。 我只是为了清楚使用图:)

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

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

介绍

为了澄清你的问题,并搭配你所要求的课程,必须在将testing分为两类之前。 JUnittesting (理论上是纯Java)和Instrumentationtesting (也是JUnittesting包的一部分,但允许您testing更多SDK Android相关function)。

传统的JUnittesting隔离了一段代码并运行testing。 仪表testing访问,而不是包含更多的android组件。 但是,仪器testing从JUNIT软件包衍生出来,尽pipe它们在系统中实例化之前,甚至在任何应用程序代码运行之前,这解释了为什么速度更慢,此外,他们需要一个模拟器或手机运行你正在testing的应用程序来执行。

(按照你所提到的所有课程,但还有其他人使用,如果没有大胆的angular色,我会写出来)。

****第一部分**(Junittesting)**

A)扩展TextCase的Junittesting(通常比Instrumentation更快,并与Mock framweworks完美结合)

AndroidTestCase :它允许访问正在testing的Activity的Context和他们的资源,它是一个扩展更多专用子类的基类,它是访问数据库,文件系统数据的理想select。 您可以轻松调用getContext()并访问资源,而无需与“工具”testingbuild立直接联系。

ApplicationTestCase ,用于控制应用程序的环境,主要是上下文和生命周期。 其他真正有用的AndroidTestCase扩展允许您控制Loaders,Services和Content Provider,但由于某些原因,仍然没有任何Broadcast receiver可以通过InstrumentationRegistry.getTargetContext()方法[间接] [1],然后实例化BroadCastReceiver 。 对于Junit使用不同的Mock框架,通常比InstrumentationTests更快

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

****第二部分**(仪表testing)**

B)扩展TestCase的Instrumentationtesting被认为是functiontesting,更关注于确保它们与MVC的View部分的用户端一起工作。它们通常比其他提到的类别慢

InstrumentationTestCase是一个有用的基类,可以将关键事件发送到UI以模拟QWERTY键盘按键或DPADbutton,还可以启动必须testing的Activity,甚至是Intents

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

ActivityInstrumentationTestCase2是最常用的Instrumentation类来编写functiontesting,从构造函数中调用Activity的实例来testing。 基本上你用getActivity()来调用这个活动,你可以实践地运行这个Activity的任何方法。

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

我发现从droidcon 09 这个教程是真正的信息。 完整的可下载的工作源代码示例。

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

它通过使用ActivityInstrumentationTestCase2,TestCase和AndroidTestCase首先创build一个Cellular到华氏温度转换器testing。