首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行Android ServiceTestCase

无法运行Android ServiceTestCase
EN

Stack Overflow用户
提问于 2011-10-22 05:28:14
回答 2查看 1.7K关注 0票数 5

我无法获得任何扩展ServiceTestCase来运行的测试用例。没有错误,只是它们没有被执行。

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

这些项目的设置如下:

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

代码语言:javascript
复制
<?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库项目在文件夹test中包含一个测试项目(使用Android工具创建)

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

代码语言:javascript
复制
<?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-test来执行测试。

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

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 11:01:17

确保为ServiceTestCase提供默认构造函数。Eclipse为您生成的代码可能并不合适。例如,在我的例子中,Eclipse是为我生成的:

代码语言:javascript
复制
public class MyServiceTestCase extends ServiceTestCase<MyService> {

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

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

因此,我用下面的代码替换了构造函数,它工作得很好:

代码语言:javascript
复制
public class MyServiceTestCase extends ServiceTestCase<MyService> {

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

希望它能为你工作。

票数 11
EN

Stack Overflow用户

发布于 2016-06-04 06:14:09

被接受的答案对我不再有效。

像ActivityInstrumentationTestCase2或ServiceTestCase这样的

TestCases被弃用,取而代之的是ActivityTestRule或ServiceTestRule。

ATSL link

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7855479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档