2010-02-19 4 views
5

Ich versuche, eine gültige Junit-Testing-Suite auf Android zu bauen.ServiceTestCase <T> .getService?

Da ich neu bei Junit bin, kann ich nicht herausfinden, wie man die ServiceTestCase-Klasse verwendet.

Ich kann nicht herausfinden, wie man die getService() Methode funktioniert. es gibt mir nie null zurück. Also habe ich beschlossen, es über startService zu starten. Es funktioniert nicht.

Könnten Sie mir bitte helfen?

Dank

+1

Wenn jemand Ihre Frage beantwortet, ist es üblich, auf das Häkchen neben der Antwort zu klicken. Dadurch können Sie schneller bessere Antworten erhalten. –

Antwort

16

Dies ist, was Sie Ihren Dienst

public class MyServiceTests extends ServiceTestCase<MyService> { 

private static final String TAG = "MyServiceTests"; 

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

/** 
* Test basic startup/shutdown of Service 
*/ 
@SmallTest 
public void testStartable() { 
    Intent startIntent = new Intent(); 
    startIntent.setClass(getContext(), MyService.class); 
    startService(startIntent); 
    assertNotNull(getService()); 
} 

/** 
* Test binding to service 
*/ 
@MediumTest 
public void testBindable() { 
    Intent startIntent = new Intent(); 
    startIntent.setClass(getContext(), MyService.class); 
    IBinder service = bindService(startIntent); 
    assertNotNull(service); 
} 
} 

ich geschrieben habe einige Artikel über Android-Tests und Test Driven Development testen müssen, die Sie nützlich finden können, überprüfen http://dtmilano.blogspot.com/search/label/test%20driven%20development.

+0

Vielen Dank. –

+0

Große Antwort noch @ dtmilano. Ihre Arbeit an Android-Tests ist sehr interessant. – Snicolas

+0

Müssen Sie zuerst Ihre App (die den Dienst startet) zuerst ausführen, bevor Sie Ihren Dienst testen? Ich möchte den Diensttest isoliert ausführen, erhalte jedoch eine NullPointerException für die Variable startIntent. –

0

Die angenommene Antwort funktioniert nicht mehr.

Testfälle wie ActivityInstrumentationTestCase2 oder ServiceTestCase werden zugunsten von ActivityTestRule oder ServiceTestRule veraltet.

ATSL link

Es scheint, sie die tatsächliche Dokumentation zu aktualisieren vergessen.