Junit - Preferences

  • Hallo Leute,


    eine Testmethode schlägt bei mir leider fehl und ich weiß nicht so recht woran es liegt.


    Hier erstmal meine Testklasse:




    Die Methode testPreCondition läuft noch einwandfrei durch, nur bei der testLastnameInteraction schlägt JUnit ein Fehler.
    Wie ihr seht habe ich da zum testen eine Testausgabe geschrieben (Log.d... ) diese gibt mir den default Value zurück also "n/a"
    Laut Doku existiert diese preference nicht, was ja aber nicht sein kann weil, dann die Methode testPreCondition bereits Fehler schmeißen müsste,
    was sie ja aber nicht tut.
    Ich denke mal das hat was mit der private Methode zu tun, aber was genau und wie man das Problem behebt weiß ich nicht :( :(


    Hoffe ihr könnt mir Helfen....



    Liebe Grüße

  • So, hat etwas gedauert, aber nun bekommst du wenigstens mal eine erste Antwort. Bislang hatte ich mich vor Unittests noch gedrückt, wollte auf 'ne gute Gelegenheit warten um selber mal meine Apps zu testen. Danke für die Frage!


    Es ist anscheinend so, dass bei lastname.getEditText().requestFocus(); kein wirklicher Focus gesetzt wird - es wird im Log auch kein Keyboard erwähnt, bei einer normalen Activity mit normalem EditText passiert das dagegen wunderbar.


    Du kannst mit lastname.setText("h") den Wert setzen, aber ich hab es nicht geschafft, mit sendKeys irgendetwas in dem Feld unterzubringen.


    Also erste Vermutung: Problem mit den Besonderheiten der Preferences - wie gesagt - bei einer normalen Activity hatte ich keine Probleme mit dem senden von Tastencodes.


    Die Besonderheit wird auch deutlich, das du lastname.setText aufrufen kannst - obwohl das nicht der EditText sondern der EditTextPreference ist. Eigentlich würde ich erwarten, dass auch lastname.getEditText().setText() funktioniert, tuts aber nicht:

    Java
    lastname.setText("aa");
    lastname.EditText().setText("XYZ");
    sendKeys("A B C");
    sendRepeatedKeys(1,KeyEvent.KEYCODE_H);


    Anschließend ist lastname.getText und preferences.getString(LASTNAME,"n/a") beides ganz brav "aa" - und das sollte es ja nicht sein. Und lastname.getEditText().getEditableText().toString() ergibt "XYZ" - da ist also ein Unterschied zwischen dem Inhalt der EditTextPreference und dem Inhalt des "zugehörigen" getEditText(). Und die Tastatureingaben sind schon mal gar nicht angekommen..


    Sehr rätselhaft...


    Und leider kennt EditTextPreference kein requestFocus() - das wäre sonst eigentlich der Weg, auf den man zuerst kommen würde.


    Wer weiß mehr???

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!