我目前正在为自己的设备处理一些CTS问题。我想到,如果我们只能从Eclipse运行一个CTS测试用例,这对调试CTS问题非常有帮助。 例如,我创建了一个Android测试项目,其中包含清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.content.pm.cts"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="android.content.pm" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
源代码:
package android.content.pm.cts;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo.DisplayNameComparator;
import android.test.AndroidTestCase;
public class ResolveInfo_DisplayNameComparatorTest extends AndroidTestCase {
private static final String MAIN_ACTION_NAME = "android.intent.action.MAIN";
private static final String SERVICE_NAME = "android.content.pm.cts.activity.PMTEST_SERVICE";
public void testDisplayNameComparator() {
PackageManager pm = getContext().getPackageManager();
DisplayNameComparator dnc = new DisplayNameComparator(pm);
Intent intent = new Intent(MAIN_ACTION_NAME);
ResolveInfo activityInfo = pm.resolveActivity(intent, 0);
intent = new Intent(SERVICE_NAME);
ResolveInfo serviceInfo = pm.resolveService(intent, PackageManager.GET_RESOLVED_FILTER);
assertTrue(dnc.compare(activityInfo, serviceInfo) < 0);
assertTrue(dnc.compare(activityInfo, activityInfo) == 0);
assertTrue(dnc.compare(serviceInfo, activityInfo) > 0);
}
}
当我右键单击项目并选择“run as android junit test”时,它只报告:测试运行失败:无法找到检测目标包:android.content.pm
我知道从一开始我可能完全错了。那么有人可以为我指出一个正确的出路吗? 非常感谢!
答案 0 :(得分:0)
你看到的错误是因为android OS找不到安装了软件包“android.content.pm”的应用程序,eclipse不知道该项目是为了安装它,安装你想要的应用程序测试(并检查它的包实际上是android.content.pm,它可能不是因为这是一个系统包,你将无法检测,因为你的调试签名不一样)