无法运行Android ServiceTestCase

时间:2011-10-21 21:28:14

标签: android servicetestcase

我无法获得任何扩展ServiceTestCase以运行的测试用例。他们没有被执行就没有错误。

扩展AndroidTestCase的其他测试用例会运行。

项目设置如下:

我有一个包含服务的Android库。它的清单文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.something.android"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="9"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application>
    <service android:name=".ExampleService" 
        android:exported="false"
    android:process=":example_service">
    </service>
</application>
</manifest>

Android Library Project在文件夹测试中包含一个测试项目(使用Android工具创建)

这包含一个AndroidManfiest.xml,如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.something.android.tests"
      android:versionCode="1"
      android:versionName="1.0">
<application>
    <uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
                 android:targetPackage="com.something.android.tests"
                 android:label="Tests for com.something.android"/>
</manifest>

我在测试项目中也有一个build.properties,其中包含:

tested.project.dir = .. android.library.reference.1 = ..

我通过运行ant clean run-tests来执行测试。

我需要做什么才能运行ServiceTestCase测试?

提前致谢。

2 个答案:

答案 0 :(得分:11)

确保为ServiceTestCase提供默认构造函数。 Eclipse为您生成的一个可能不合适。例如,就我而言,Eclipse为我生成了:

public class MyServiceTestCase extends ServiceTestCase<MyService> {

  public MyServiceTestCase(Class<MyService> serviceClass) {
    super(serviceClass);
  }
  ...
}

Android JUnit无法实例化MyServiceTestCase,但它没有抱怨,我只能看到没有运行的测试用例。

之前我用以下内容替换了构造函数,并且它运行良好:

public class MyServiceTestCase extends ServiceTestCase<MyService> {

  public MyServiceTestCase() {
    super(MyService.class);
  }
  ...
}

希望它适合你。

答案 1 :(得分:0)

接受的答案对我不起作用。

  

ActivityInstrumentationTestCase2或ServiceTestCase等测试用例   不赞成使用ActivityTestRule或ServiceTestRule。

ATSL link

似乎他们忘了更新实际文档。