1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Testing

Dieses Thema im Forum "Java Mobile, Android, J2ME, Blackberry" wurde erstellt von julia123, 10. Dezember 2014.

  1. julia123

    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 :

    Code (Java):
    1. protected void setUp() throws Exception {
    2.      super.setUp();
    3.      act = getActivity();
    4.      intst = getInstrumentation();
    5.      solo = new Solo(intst, act);
    6.  
    7.      manager = ((FragmentActivity) act).getSupportFragmentManager();
    8.  
    9.      manager.beginTransaction()
    10.          .replace(R.id.content_frame, new SucheVnrFragment()).commit();
    11.      intst.waitForIdleSync();
    12.      listeSearch = (TextView) act
    13.          .findViewById(R.id.textViewSucheAktAnzVeranstaltungen);
    14. }
    15.  
    16. public void testA() {
    17.  
    18.  
    19.      solo.clickOnButton(3);
    20.  
    21.      String anzahlVeranstaltungen = listeSearch.getText().toString()
    22.          .replaceAll("[^\\d.]", "");// nur zahlen
    23.      int anzahlVer = Integer.parseInt(anzahlVeranstaltungen);
    24.      assertTrue(anzahlVer > 50);
    25.  
    26.    }
    27.  
    28.    public void testB() {
    29.  
    30.      solo.pressSpinnerItem(0, 1);
    31.      solo.clickOnButton(3);
    32.  
    33.      solo.getText(0).toString();
    34.  
    35.      String anzahlVeranstaltungen = listeSearch.getText().toString()
    36.          .replaceAll("[^\\d.]", "");
    37.      int anzahlVer = Integer.parseInt(anzahlVeranstaltungen);
    38.      assertTrue(anzahlVer > 50);
    39.  
    40.    }
    41.  
    42. [code=JAVA]
    43.  
    44. 2) Wie kann ich mein Wifi ausschalten und wieder einschalten um meine App darauf zu testen.
    45. Das disconnecten ist einfach :
    46. wifi = (WifiManager) act.getSystemService(Context.WIFI_SERVICE);
    47. wifi.disconnect();
    48. ... Aber wie kann ich das wieder rückgängig machen.
    49. 3)
    50. Wie kann ich eine Telepohnat simulieren. Auch wieder zur Test zwecke.
    51.  
    52. Ich arbeite grade mit Robotium ist das ausreichend?
     
  2. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    poste mal bitte den Stacktrace der Exception, ohne den können wir nur ins Blaue raten.

    Grüße,
    BK
     
  3. julia123

    julia123 Erfahrenes Mitglied

    ...
    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.
     
  4. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    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
     
    julia123 gefällt das.
  5. julia123

    julia123 Erfahrenes Mitglied

    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: 11. Dezember 2014
  6. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    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
     
    julia123 gefällt das.
  7. julia123

    julia123 Erfahrenes Mitglied

    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. :(