2011-10-21 77 views
5

我無法獲得任何擴展ServiceTestCase運行的測試用例。沒有錯誤,他們只是沒有執行。無法讓Android 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的圖書​​館項目中包含的文件夾測試(使用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.ref erence.1 = ..

我通過運行ant clean run-tests來執行測試。

我需要做些什麼才能使ServiceTestCase測試運行?

在此先感謝。

回答

11

確保您提供ServiceTestCase的默認構造函數。 Eclipse爲您生成的一個可能不合適。例如,在我的案件的Eclipse對我產生:

public class MyServiceTestCase extends ServiceTestCase<MyService> { 

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

的Android的JUnit不能夠實例MyServiceTestCase,但它並沒有抱怨,我只能看到沒有測試的情況下運行。

Thefore我換成下面的構造函數,它很好的工作:

public class MyServiceTestCase extends ServiceTestCase<MyService> { 

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

希望它爲你工作。

+0

我按照你的建議,但仍然得到這個錯誤。請參閱http://stackoverflow.com/questions/33311533/how-to-correctly-use-android-test-servicetestcase – likejiujitsu

0

接受的答案不再適用於我。

的TestCase像ActivityInstrumentationTestCase2或ServiceTestCase被 棄用,取而代之的ActivityTestRule或ServiceTestRule的。

ATSL link

他們似乎忘了更新的實際文檔。