Android提供各种测试包,例如
AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase
我需要知道如何确定哪个包最适合测试我的应用。此链接提供了一些信息
HTTP://developer.android.com/reference/android/test/package-summary.html
但我需要更清楚......
答案 0 :(得分:47)
TestCase - 简单的旧JUnit测试用例。它可以扩展为测试与Android框架无关的实用程序类。
AndroidTestCase - 它扩展了JUnit的TestCase。它更轻 测试类相比 ActivityTestCase。它不需要 启动一个活动来运行它。它的 getContext()方法允许你获取 如果需要,可以注入上下文。 因为你可以从中得到一个上下文 类,您可以膨胀您的UI对象 测试他们的行为。
ActivityInstrumentationTestCase2 - 这是ActivityInstrumentationTestCase的较新版本。 Android SDK 1.5中不推荐使用ActivityInstrumentationTestCase。与AndroidTestCase相比,它是一个更重的测试类。它为单个活动提供UI和功能测试。您可以通过调用getActivity()方法获取正在测试的注入活动。正在测试的活动在每次测试之前和之后启动并完成。
ActivityUnitTestCase - 它给出了 被测活动是孤立的 环境。用它来测试时 活动,活动没有附加 到系统。这会给你更多 控制什么样的环境 你想要你的活动 经过测试。
ApplicationTestCase - 它提供了对Application类的测试。它可用于测试应用程序的生命周期。
InstrumentationTestRunner - 运行Android测试的跑步者 例。
我刚发现这个......希望这对其他人有帮助......如果你想要更多细节,比如何时以及如何使用,请参阅android SDK中samples目录中的APIDemos测试应用程序。
答案 1 :(得分:9)
请参阅我自己使用PowerPoint绘制的班级层次结构图。
接受的答案提供了足够的文字信息。我只是用图表说清楚:))
对于InstrumentationTestCase @Zorb问,它是ActivityTestCase的父类。它使您可以调用getInstrumentation方法来获取检测实例,以便您可以操作应用程序,活动等。
答案 2 :(得分:3)
<强> INTRO 强>
为了澄清您的问题并配置您要求的课程,必须将测试分为两类。 JUnit测试 (理论上是普通Java)和 Instrumentation测试 (这也是JUnit测试包的一部分,但是允许您测试更多与SDK相关的SDK功能)。
传统的JUnit测试隔离了一段代码并运行测试。 Instrumentation测试访问更多包含android组件。但是仪器测试也会从JUNIT PACKAGE中获得,尽管它们甚至在任何应用程序代码运行之前都在系统中实例化,这解释了为什么速度较慢,而且它们需要一个模拟器或电话来运行您正在测试的应用程序。
(跟随你所提到的所有课程中的大胆,但是如果没有大胆的角色,我会写下更多的其他课程。)
****第一部分**(Junit测试)**
A) 扩展TextCase的Junit测试(通常比Instrumentation更快,并且与Mock framweworks结合得很好)
AndroidTestCase :它允许访问您正在测试的Activity及其资源的Context,它是扩展更专业的子类的基类,非常适合访问数据库,文件系统数据。您可以轻松调用getContext()并访问资源,而无需与Instrumentation测试建立与活动的直接联系。
ApplicationTestCase ,用于控制文本应用程序的环境,主要是上下文和生命周期。 AndroidTestCase的其他非常有用的扩展允许您控制加载器,服务和内容提供者,但由于某种原因,仍然没有任何广播接收器可以[间接] [1]使用InstrumentationRegistry.getTargetContext()方法调用它然后实例化BroadCastReceiver 。通常使用与Junit不同的Mock框架通常比InstrumentationTests
更快-.-。-。-。-。-。-。-.--
****第二部分**(仪器测试)**
扩展TestCase的B) 检测测试, 被认为是功能测试,更专注于确保它们与用户端一起工作,MVC的View部分。它们通常比其他提到的类别慢
InstrumentationTestCase 是一个基类,可用于将关键事件发送到UI以模拟QWERTY键盘键或DPAD按钮,还可以启动必须测试的Activity,甚至是Intents
ActivityTestCase 通常不单独使用,它只有子类的公共代码,但是如果你不满意继承自这个类的3个类(见下文),就像新的一样未来的组件你可以使用它的时候不会存在一个专用的TestCase类。
ActivityInstrumentationTestCase2 是最常用的Instrumentation类来编写功能测试,从构造函数调用Activity的实例进行测试。基本上你用getActivity()调用活动,你可以实际运行该Activity的任何方法。
不推荐使用 ActivityInstrumentationTestCase,并且虽然在Instrumentation下面的ActivityUnitTestCase更类似于单元测试答案 3 :(得分:1)
我发现来自droidcon 09的this tutorial非常有用。完成可下载的工作源代码示例。
编辑:正如评论中所指出的那样,链接似乎已经死了。
首先使用ActivityInstrumentationTestCase2,TestCase和AndroidTestCase创建一个Celcius到Fahrenheit温度转换器。