在为Android应用程序设置了所有单元测试用例之后,我现在也想进行功能测试。但我解决了一个问题。当我为HTC Legend开发时,我现在只能使用高达2.1的Android平台。但在某种程度上, ActivityInstrumentationTestCase2 似乎不起作用。
public SupplierSelectoinTest() {
super("com.sap.catalogue.activities", SupplierSelection.class);
}
当我尝试运行测试时,这段简单的代码会给我以下错误:
java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.sap.catalogue.activities/com.sap.catalogue.activities.SupplierSelection }
at android.app.Instrumentation.startActivitySync(Instrumentation.java:371)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:120)
at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:98)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:87)
at com.sap.catalogue.test.acceptance.SupplierSelectoinTest.setUp(SupplierSelectoinTest.java:27)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
我阅读了所有教程,我得到的是,它应该可以工作,但事实并非如此。无论如何,当我切换到android 2.2(现在没有解决方案)并且我使用新的构造函数时,我只需要提交活动类而不是pkg字符串,模拟器将运行测试而不会抱怨。
但是必须有一种方法可以在Android 2.1中运行它!
另外 这些是我的两个Manifest.xml文件。第一个,是应用程序本身之一。另一个是测试项目之一。
Application Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sap.catalogue"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Catalogue"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activities.CategoryBrowser"></activity>
<activity android:name=".activities.ProductDetails"></activity>
<activity android:name=".activities.ProductSearch"></activity>
<activity android:name=".activities.ProductView"></activity>
<activity android:name=".activities.SupplierSelection"></activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
测试Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sap.catalogue.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="android.test.runner" />
</application>
<uses-sdk android:minSdkVersion="7" />
<instrumentation android:targetPackage="com.sap.catalogue" android:name="android.test.InstrumentationTestRunner" />
</manifest>
答案 0 :(得分:6)
使用顶级包名称。
public SupplierSelectoinTest() {
super("com.sap.catalogue", SupplierSelection.class);
}
答案 1 :(得分:0)
最有可能的是,您没有在Manifest.xml中编写活动。你会分享吗?
编辑:
将其添加到测试Manifest.xml中。我想,这将解决你的问题。
<activity android:name="com.sap.catalogue.activities.SupplierSelection"></activity>