是否可以从Eclipse运行单个Android CTS测试用例?

是否可以从Eclipse运行单个Android CTS测试用例?,android,eclipse,testing,junit,cts,Android,Eclipse,Testing,Junit,Cts,我目前正在为我们自己的设备处理一些CTS问题。我的想法是,如果我们可以从Eclipse运行单个CTS测试用例,这将非常有助于调试CTS问题。 例如,我创建了一个Android测试项目,其中包含清单文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.conten

我目前正在为我们自己的设备处理一些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);
    }
}
包android.content.pm.cts;
导入android.content.Intent;
导入android.content.pm.PackageManager;
导入android.content.pm.ResolveInfo;
导入android.content.pm.ResolveInfo.DisplayNameComparator;
导入android.test.AndroidTestCase;
公共类ResolveInfo\u DisplayNameComparatorTest扩展了AndroidTestCase{
私有静态最终字符串MAIN\u ACTION\u NAME=“android.intent.ACTION.MAIN”;
私有静态最终字符串服务\u NAME=“android.content.pm.cts.activity.PMTEST\u服务”;
public void testDisplayNameComparator(){
PackageManager pm=getContext().getPackageManager();
DisplayNameComparator dnc=新的DisplayNameComparator(pm);
意向意向=新意向(主要行动名称);
ResolveInfo activityInfo=pm.resolveActivity(intent,0);
意向=新意向(服务名称);
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);
}
}
当我右键单击项目并选择“作为android junit测试运行”时,它只是报告:测试运行失败:找不到工具目标包:android.content.pm

我知道我可能从一开始就完全错了。有谁能为我指出一条正确的出路吗?
非常感谢

您看到的错误是因为android操作系统找不到安装有“android.content.pm”软件包的应用程序,而eclipse不知道该项目。要为您安装它,请安装要测试的应用程序(检查它的软件包实际上是android.content.pm,这可能不是因为它是一个系统软件包,您将无法针对它进行检测,因为您的调试签名不一样)

是的,经过这些天,我认为您的解释很合理。谢谢。