ServiceTestCase не запускает мой сервис - PullRequest
0 голосов
/ 20 января 2012

Я пытаюсь написать несколько тестов JUnit для моего приложения для Android.Приложение является службой.

Я пробовал несколько вещей, чтобы заставить ServiceTestCase запустить службу, но это не удается.

ОДНАКО, когда я отлаживаю ServiceTestCase, он БУДЕТ запустить службу.Я верю, что это потому, что ServiceTestCase вызывает установку и не дает достаточно времени для запуска службы, прежде чем она убьет ее ...

Я не совсем уверен, это первый раз, когда я когда-либо использовал тестирование Junitдля андроида.ОЧЕНЬ новичок в этом.Любые предложения о том, что я могу сделать, чтобы решить эту проблему?

Я думал о создании некоторого цикла таймера или что-то, но это кажется действительно грязным.Хотелось бы намного чище подходить.


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() {
      }
}

1 Ответ

0 голосов
/ 23 января 2012

Я ссылался на один из зависимых проектов неправильно. Как только это было исправлено, это решило проблему. Поэтому проверьте и убедитесь, что вы правильно ссылаетесь на свои проекты, если у вас возникла та же проблема.

...