Android API中的Instrumentation类

时间:2010-04-06 10:24:32

标签: android junit instrumentation

我对Android API有疑问。 Android API提供了一个名为“Instrumentation”的类。这门课有什么用? Instrumentation类是否仅与Junit一起用于单元测试。

Junit框架可用于测试Android API的方法,而无需使用Instrumentation类。

由于Junit软件包已包含在Android软件包中,我希望我们不需要单独使用install进行单元测试。

如果您能向我提供信息,我将不胜感激,因为我无法在网络上的任何地方找到这些明确的信息。

如果我们使用Junit测试框架来测试Android API,我们是否可以使用UI格式而不是测试格式来测试结果。?

非常感谢。欣赏你的时间。

此致 Riyas

3 个答案:

答案 0 :(得分:4)

Instrumentation类允许测试用例订阅各种应用程序事件(按键等),并以编程方式控制UI以启用应用程序的功能测试。

因此,如果您所做的只是单元测试,而不是UI的功能测试,那么从技术上讲,您不需要Instrumentation类进行Junit测试。 可以只是扩展TestCase,但不提供任何Instrumentation支持。

这是link,其中包含对各种测试类的一些相当好的描述。

Junit包含在Android中,无需单独安装。

答案 1 :(得分:0)

Instrumentation API主要用于向UI注入各种事件,以便对应用程序进行压力测试。您可以创建一个任意事件,例如点击屏幕并使用instrumentation API注入它,这基本上就像伪事件生成。

答案 2 :(得分:0)

Instrumentation 类是测试框架的基类,它提供了非常具体的功能,它还提供 API 以通过 ADB 使用 ActivityManager 接口调用设备/模拟器上的测试。此外,它还可以将结果返回给开发机器。

通过覆盖这个类,您可以享受运行测试所需的所有上下文和帮助类。

下面是一个示例实现,我写信是为了向您解释功能。

public class SampleInstrumentation extends Instrumentation {

    @Override
    public void onCreate(Bundle arguments) {
        super.onCreate(arguments);
        Bundle bundle = new Bundle();
        bundle.putString("whatisthis","thisiswhat");
        finish(0,bundle);

    }
}

清单:

...
...
    </application>
    <instrumentation
        android:name=".SampleInstrumentation"
        android:targetPackage="com.commons"></instrumentation>
</manifest>

现在,如果您从开发机器运行此命令。

adb shell am instrument -w -m com.commons/com.commons.SampleInstrumentation

您的检测类 onCreate 方法被调用,您将在控制台上获得一些二进制编码的响应,其中包含您传递给“完成”函数的包中的数据。

"


whatisthis
thisiswhat

我希望这能让您了解特定于该基类的功能。出于某种动机,我想补充一点,新的 android 测试框架 androidx.test 与我们的应用程序一起编译(不是操作系统的一部分,可以修改)直接扩展了 Instrumentation 类(Android 框架/操作系统的一部分)执行)。因此,您只需使用此类即可编写自己的全新测试框架实现。