Wie kann ich die unit-test-user input in java
Ich versuche zu verstehen wie kann ich testen, die Eingabe des Benutzers (bitte beachten ich bin nicht versuchen zu tun, ein mock-test sondern ein test über aktuelle Eingabe des Benutzers)
Derzeit, wie Sie sehen können, in meinem Programm habe ich hart codiert die Werte für meine test-Fall und es ist das bestehen aller tests, aber wie bekomme ich die Eingabe des Benutzers und testen Sie es .
Ist es eine Möglichkeit, wo kann ich Ruf-System.in meinem Konstruktor und übergeben es, wenn ich erstellen Sie eine Instanz von MyClass1 in der test-Klasse?
Bitte, wenn möglich, geben Sie mir einige Beispiel-code, so kann ich besser verstehen.
Wenn ich ein interface als solches
public interface IMyClass{
public int getvalue1();
public int getvalue2();
public int getvalue3();
}
und dann interface-Implementierung als solche
public class MyClass1 implements MyClass{
private int _value1 = 0;
private int _value2 = 0;
private int _value3 = 0;
public MyClass1(int number1, int number2, int number3)
{
_value1 = number1;
_value2 = number2;
_value3 = number3;
}
public void setLength1(int value1)
{
_value1 = value1;
}
public void setLength2(int length2)
{
_value2 = value2;
}
public void setLength3(int length3)
{
_value3 = value3;
}
public int getValue1()
{
return _value1;
}
public int getValue2()
{
return _value2;
}
public int getValue3()
{
return _value3;
}
}
und schließlich eine test-Klasse als solche:
public class ClasTest extends TestCase {
public void testNumbers()
{
MyClass1 numbers= new MyClass1(1,2,3);
assertThat(numbers.getValue1(),is(not(numbers.getValue2())));
}
}
Danke, ich freue mich über jede Hilfe.
- MVC, MVP ? Entwurfsmuster?
- Ich bin mit MVC.
- Was Sie tun in Ihrem test reicht aus einer Test-Sicht. Das einzige, was möglich wäre, um zufällig zu generieren Eingaben und testen Sie, basierend auf zufälligen Eingaben.
- Warum nicht verwenden fest codierte Werte für Ihre tests? Sie brauchen nur zu denken, über die in besonderen Fällen (Grenzen, wie Integer.MAX_VALUE, 0 etc) auch mix-ins einige positive und negative zahlen, und vielleicht wird dies genug sein. Diese grundlegende Fälle abdecken sollte allen anderen Fällen.
- Ja aber wie kann ich es testen?
- Test was genau? Sie haben nicht gezeigt, beliebigen code unter test beinhaltet, dass die Benutzer-Eingabe. Mit einem unit test selbst zu Lesen von der Konsole in irgendeiner Weise (System.in, Scanner, ...) ist nicht, wie unit-testing funktioniert-unit-tests sollen automatisiert werden und Sie sich nicht auf die menschliche Interaktion.
- Die Abstimmung zu schließen, und nicht eine echte Frage. Zwischen die Kommentare auf dieser und allen die Antworten es ist klar, niemand hat eine Ahnung, wovon Sie reden.
- Unit-tests für die setter und Getter, die den Betrieb auf einen einzelnen Wert ohne business-Regeln sind kaum nützlich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
System.setIn(new InputSteam());
und dann schreiben Sie die input-stream übergeben System.infinden Sie unter: JUnit: Wie simulieren-System.in der Prüfung?
Single-Input
Ergebnis
Mehrere Eingänge
Ergebnis
Wenn auf unix -
java MyProgram < sampleinput.txt
Benutzer die Scanner-Klasse