2012-01-20 10 views
0

私のAndroidアプリケーション用のJUnitテストを書こうとしています。アプリケーションはサービスです。ServiceTestCaseが私のサービスを起動していません

ServiceTestCaseでサービスを起動するにはいくつか試みましたが、失敗しました。

しかし、私はServiceTestCaseをデバッグするときにサービスを起動します。私はServiceTestCaseがセットアップを呼び出していて、サービスが起動するまでに十分な時間を与えていないからです...

私はこれまでにjunit testing for androidを初めて使用したことはありません。非常にこれに新しい。私はこの問題を解決するために何ができるかに関する提案はありますか?

私はタイマーループなどを作成することを考えていましたが、それは本当に汚いようです。はるかにクリーンなアプローチを希望します。


Android Manifest for the service. 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="dataservice.server" 
    <uses-sdk android:minSdkVersion="10" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name="dataservice.server.DataServer" android:process=":remote" android:exported="true" android:enabled="true"> 
      <intent-filter> 
       <action android:name="dataservice.DataService.BIND.1" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name= ".DataServer" /> 
      </intent-filter> 
     </service> 
     <receiver android:name="dataservice.server.Receiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.USER_PRESENT"></action> 
       <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

The ServiceTestCase i am attempting. 
public class Publish extends ServiceTestCase<DataServer> { 

    private final static String TAG = "Publish Unit Test"; 
    private Context mSystemContext; 

    public Publish() { 
     super(DataServer.class); 
    } 

    public Publish(Class<DataServer> serviceClass) { 
     super(serviceClass); 
    } 

    @Override 
    protected void setUp() throws Exception { 
     // TODO Auto-generated method stub 
     super.setUp(); 
       // this is where i am attempting to start the service. 
       // i have attempted other methods, but none of those worked either. 
       startService(new Intent(this.getContext(), DataServer.class)); 
    } 

    public void testPublish() { 
     } 
} 

答えて

0

私が間違って依存プロジェクトの1を参照しました。これが修正されると、問題が解決されました。したがって、同じ問題を抱えている場合は、プロジェクトを参照していることを確認してください。

関連する問題