我正在为我的Android应用程序中的组件编写测试.该组件使用活动来制作一些报告.所以我需要一个活动来测试组件(丑陋的架构),我认为在测试项目中创建一个虚拟活动比创建继承的测试更容易ActivityInstrumentationTestCase2<TestActivity>,但由于某种原因我总是得到java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx/.Testctivity }异常.
测试活动被添加到清单文件中,并且包似乎已正确设置.
我试图将它放在com.xxx(应用程序包)和com.xxx.test包中,没有运气.但是当我将TestActivity移动到目标应用程序时,一切正常.所以我开始想知道测试项目和我的应用程序之间的区别是什么,甚至可以在测试项目中进行活动.
是的,有可能但不推荐,正如官方开发指南中所述:
创建测试项目后,使用测试包填充它.此软件包不需要Activity,但您可以根据需要定义一个.虽然您的测试包可以组合Activity类,测试用例类或普通类,但您的主要测试用例应该扩展其中一个Android测试用例类或JUnit类,因为它们提供了最佳的测试功能.
为此,您需要:
假设我有一个测试项目com.example.test包含两个类DummyActivity和DummyActivityTest,那么如果你想使用DummyActivityTest测试DummyActivity,你需要像下面这样定义Test Project的AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<!-- targetPackage point to test project itself -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.test" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
<activity
android:name=".DummyActivity"
android:label="@string/app_name" >
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5045 次 |
| 最近记录: |