Jump to content

Empfohlene Beiträge

Nein. Wozu auch? Unit Tests sind keine interaktiven Benutzertests, sondern automatisierte Tests, die im Idealfall nach jedem Buildprozess durchlaufen werden. Du gibst also die Eingaben per Programmcode vor. So ist auch sichergestellt, dass das Ergebnis immer reproduzierbar ist, da immer die selben Eingaben gemacht werden.

Du musst also die Eingabe von deiner zu testenden Einheit trennen, sodass die Einheit auch ohne Interaktivität des Benutzers durchlaufen werden kann.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 4 Stunden schrieb Melina:

Guten morgen, 

ist es möglich über Junit auch Eingaben zu testen, also system.in zu testen? Sodass Eingaben automatisch passieren ? 

Natürlich geht das. Beispiel:

Wir haben eine Login-Maske wie man sie kennt:

Eingabefeld: Benutzername

Eingabefeld: Passwort

Button: Login

Beim Klick des Buttons Login werden die eingegebenen Strings von den Eingabefeldern einer Methode übergeben, beispielsweise benutzerEinloggen(string pw, string user). Dieser Methode gibst du ja die Parameter aus den Eingabefeld mit.

Um im Unittest die Benutzereingabe zu testen, rufst Du einfach im Unittest die Methode benutzerEinloggen(string pw, string user) auf und gibst dann entweder hardgecodedete Strings mit oder Variablen aus der Unit Test Klasse.

Somit simulierst Du dann eine Benutzereingabe und den Klick auf den Login Button.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 7 Minuten schrieb thereisnospace:

Um im Unittest die Benutzereingabe zu testen, rufst Du einfach im Unittest die Methode benutzerEinloggen(string pw, string user) auf und gibst dann entweder hardgecodedete Strings mit oder Variablen aus der Unit Test Klasse.

Somit simulierst Du dann eine Benutzereingabe und den Klick auf den Login Button.

Das ist nichts anderes, als das, was ich geschrieben habe. ;)

Benutzereingaben während eines Unit Test-Laufes machen keinen Sinn. Man möchte doch nicht ständig bei jedem Lauf Benutzername und Passwort eintippen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich glaube ich meinte das ähnlich. Ich wollte einen Unit Test machen womit eingaben automatisch gemacht werden können ob die eingaben auch so sind wie erwartet. einfach um zu wissen Spiel läuft noch nichts kaputt gemacht, statt ständig alles von hand einzugeben

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

In .NET kann man bei den UnitTests via Annotations mehrere zu testenden Werte an den Test übergeben. Heißt der Test wird mit allen per Annotation angegeben werten getestet. 

Wenn du das Verhalten deiner Oberfläche bei bestimmten Eingaben Testen willst empfehle ich Selenium. Lässt sich sehr gut via Python umsetzten. Ansonsten auch per Java / .NET. Ich Persönlich bevorzuge da aber Python. 

Leider geht aus deiner Antwort nicht ganz klar hervor was du nun gerne umsetzen möchtest. 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 20 Stunden schrieb Whiz-zarD:

Das ist nichts anderes, als das, was ich geschrieben habe. ;)

Benutzereingaben während eines Unit Test-Laufes machen keinen Sinn. Man möchte doch nicht ständig bei jedem Lauf Benutzername und Passwort eintippen.

Ich weiß. Ich habe es nur nochmal anfängerfreundlich näher erläutert :)

bearbeitet von thereisnospace

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 20 Stunden schrieb Melina:

Ich glaube ich meinte das ähnlich.

Wenn du nur glaubst, etwas gemeint zu haben: wer soll es wissen?

vor 20 Stunden schrieb Melina:

Ich wollte einen Unit Test machen womit eingaben automatisch gemacht werden können ob die eingaben auch so sind wie erwartet.

Die sind nicht nur wie erwartet sondern genau so, wie im Testfall gespeichert.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 8.10.2019 um 12:56 schrieb thereisnospace:

Natürlich geht das. Beispiel:

Wir haben eine Login-Maske wie man sie kennt:

Eingabefeld: Benutzername

Eingabefeld: Passwort

Button: Login

Beim Klick des Buttons Login werden die eingegebenen Strings von den Eingabefeldern einer Methode übergeben, beispielsweise benutzerEinloggen(string pw, string user). Dieser Methode gibst du ja die Parameter aus den Eingabefeld mit.

Um im Unittest die Benutzereingabe zu testen, rufst Du einfach im Unittest die Methode benutzerEinloggen(string pw, string user) auf und gibst dann entweder hardgecodedete Strings mit oder Variablen aus der Unit Test Klasse.

Somit simulierst Du dann eine Benutzereingabe und den Klick auf den Login Button.

Das ist falsch. Unit Tests sollen Verhalten von Methoden überprüfen. Was du beschreibst ist eine einfache Parameterübergabe ala set/get was üblicherweise nicht mit Tests abgedeckt wird. Verhalten wäre in diesem Zusammenhang eine Überprüfung der Parameter auf Formate ect

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 20 Stunden schrieb TheGuy:

Das ist falsch. Unit Tests sollen Verhalten von Methoden überprüfen. Was du beschreibst ist eine einfache Parameterübergabe ala set/get was üblicherweise nicht mit Tests abgedeckt wird. Verhalten wäre in diesem Zusammenhang eine Überprüfung der Parameter auf Formate ect

Öhm... das ist doch genau das, was er beschreibt:

Er will die Methode

public ILoginResult benutzerEinlogen(string password, string userName)  { // implementation }

testen.

Das macht er mit einem UnitTest.
Er gibt Werte für die Übergabeparameter password und userName vor, ruft damit die zu testende Methode auf und prüft ob die Methode das tut, was sie soll.

Verstehe gerade deinen Einwand nicht.
Wenn innerhalb der Methode noch eine weitere Methode aufgerufen wird mit den Parametern, bspw:

private IVerifyResult verifyParameter (...something) { // implementation }

lässt sich über ArgumentCaptor überprüfen, ob die korrekten Werte an verifyParameter übergeben worden sind.

bearbeitet von r4phi

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 9.10.2019 um 15:28 schrieb TheGuy:

Das ist falsch. Unit Tests sollen Verhalten von Methoden überprüfen.

Genau das habe ich beschrieben.

Setter und getter überprüfen keine Login Methode. Sie setzen, beziehungsweise holen sich Werte aus einem Objekt. Das hat nichts mit meinem Beitrag zu tun.

Ich habe nur beschrieben wie er das Login Verhalten via Unittests ohne manuelle Nutzereingaben überprüfen kann.

Danke an @r4phi für die Ergänzung.

bearbeitet von thereisnospace

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung