Testing

julia123

Erfahrenes Mitglied
Hey, ich hab folgende 3 Probleme:
1)
Ich habe Test der eine lüft durch ohne Problme beim anderen bekommen ich eine Test run failed: Instrumentation run failed due to 'java.lang.NullPointerException' Error. Hab schon über all gegoogled und komme einfach nicht weiter. Ich vermute das mit der iniszalisierung was falsch ist aber ich komm nicht drauf.

Hier der Quellcode :

Java:
protected void setUp() throws Exception {
     super.setUp();
     act = getActivity();
     intst = getInstrumentation();
     solo = new Solo(intst, act);

     manager = ((FragmentActivity) act).getSupportFragmentManager();

     manager.beginTransaction()
         .replace(R.id.content_frame, new SucheVnrFragment()).commit();
     intst.waitForIdleSync();
     listeSearch = (TextView) act
         .findViewById(R.id.textViewSucheAktAnzVeranstaltungen);
}

public void testA() {

  
     solo.clickOnButton(3);

     String anzahlVeranstaltungen = listeSearch.getText().toString()
         .replaceAll("[^\\d.]", "");// nur zahlen
     int anzahlVer = Integer.parseInt(anzahlVeranstaltungen);
     assertTrue(anzahlVer > 50);

   }

   public void testB() {
 
     solo.pressSpinnerItem(0, 1);
     solo.clickOnButton(3);

     solo.getText(0).toString();
 
     String anzahlVeranstaltungen = listeSearch.getText().toString()
         .replaceAll("[^\\d.]", "");
     int anzahlVer = Integer.parseInt(anzahlVeranstaltungen);
     assertTrue(anzahlVer > 50);

   }

2) Wie kann ich mein Wifi ausschalten und wieder einschalten um meine App darauf zu testen.
Das disconnecten ist einfach :
wifi = (WifiManager) act.getSystemService(Context.WIFI_SERVICE);
wifi.disconnect();
... Aber wie kann ich das wieder rückgängig machen.
3)
Wie kann ich eine Telepohnat simulieren. Auch wieder zur Test zwecke.

Ich arbeite grade mit Robotium ist das ausreichend?
 
...
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.615: I/SucheVnr Josn Value(26068): FEHLER
12-11 14:47:17.620: W/dalvikvm(26068): threadid=12: thread exiting with uncaught exception (group=0x41b3c700)
12-11 14:47:17.625: E/AndroidRuntime(26068): FATAL EXCEPTION: AsyncTask #2
12-11 14:47:17.625: E/AndroidRuntime(26068): java.lang.RuntimeException: An error occured while executing doInBackground()
12-11 14:47:17.625: E/AndroidRuntime(26068): at android.os.AsyncTask$3.done(AsyncTask.java:299)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-11 14:47:17.625: E/AndroidRuntime(26068): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-11 14:47:17.625: E/AndroidRuntime(26068): atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.lang.Thread.run(Thread.java:841)
12-11 14:47:17.625: E/AndroidRuntime(26068): Caused by: java.lang.NullPointerException
12-11 14:47:17.625: E/AndroidRuntime(26068): at de.thm.suche.SucheVnrFragment$XmlDownloader.doInBackground(SucheVnrFragment.java:490)
12-11 14:47:17.625: E/AndroidRuntime(26068): at de.thm.suche.SucheVnrFragment$XmlDownloader.doInBackground(SucheVnrFragment.java:1)
12-11 14:47:17.625: E/AndroidRuntime(26068): at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-11 14:47:17.625: E/AndroidRuntime(26068): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-11 14:47:17.625: E/AndroidRuntime(26068): ... 4 more

ich hoffe das ist das was du meinst ?
Ansonsten hab ich was verpasst.
 
Hi,

die relevanten Zeilen sind die unterhalb des "Caused by".

at de.thm.suche.SucheVnrFragment$XmlDownloader.doInBackground(SucheVnrFragment.java:490)

Anscheinend tritt bei dir in Zeile 490 ein Zugriff auf null statt.
Beispiel, wenn es die folgende Zeile ist:
solo.clickOnButton(3);

Dann ist "solo" hier null, also noch nicht instanziert.

Grüße,
BK
 
So einfach und ich bin nicht drauf gekommen vielen lieben danke, es klappt!
Hab es jetzt so verändert das in Test B

this.act = getActivity();
this.intst = getInstrumentation();
this.solo = new Solo(this.intst, this.act);

inizalisiert wird.

Was ich komisch finde das manchmal torzdem test daneben gehen. Das leigt denke ich an Prekondition...

Hab jedoch noch ein anderes Problem hab mich mit Wifi auseinander gesetzt. Wifi ausschalten ist easy und die Test laufen wie erwartet. Jedoch das connecten läuft nicht, ich hab das Gefühl das der Test schneller durchläuft als dass mein Wifi wieder eine verbindung zu meinem Router hat. Hier mein
Ich hab jetzt sowas versucht das ich solo.wait(1000) rein zu setzte bekomme aber dann eine monitorexeption.
 
Zuletzt bearbeitet:
Hi,

auch wenn alle Objekte eine "wait()"-Methode haben, so verstehst du diese falsch. Du suchst Thread.sleep(), das wait() ist für die Synchronisation von mehreren Thread per notify() gedacht.

Zu dem WLAN kann ich dir leider nicht helfen, kenne mich mit der Android Programmierung nicht aus.

Grüße,
BK
 
Stimmt das mit wait() war unsinn. Leider hat das mit sleep() jedoch auch nicht geklappt, obwohl es das tut was ich als Lösung erachtet hab. :(
 
Zurück