JUnit - Zeittest
JUnit bietet eine praktische Option für Timeout. Wenn ein Testfall länger dauert als die angegebene Anzahl von Millisekunden, markiert JUnit ihn automatisch als fehlgeschlagen. DastimeoutDer Parameter wird zusammen mit der Annotation @Test verwendet. Lassen Sie uns den @ Test (Timeout) in Aktion sehen.
Erstellen Sie eine Klasse
Erstellen Sie eine zu testende Java-Klasse, z. MessageUtil.java in C: \> JUNIT_WORKSPACE.
Fügen Sie innerhalb der printMessage () -Methode eine Endlos-while-Schleife hinzu.
/*
* This class prints the given message on console.
*/
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message){
this.message = message;
}
// prints the message
public void printMessage(){
System.out.println(message);
while(true);
}
// add "Hi!" to the message
public String salutationMessage(){
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
Erstellen Sie eine Testfallklasse
Erstellen Sie eine Java-Testklasse, z. TestJunit.java. Fügen Sie dem Testfall testPrintMessage () eine Zeitüberschreitung von 1000 hinzu.
Erstellen Sie eine Java-Klassendatei mit dem Namen TestJunit.java in C: \> JUNIT_WORKSPACE.
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;
public class TestJunit {
String message = "Robert";
MessageUtil messageUtil = new MessageUtil(message);
@Test(timeout = 1000)
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
messageUtil.printMessage();
}
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Robert";
assertEquals(message,messageUtil.salutationMessage());
}
}
Erstellen Sie eine Testrunner-Klasse
Erstellen Sie eine Java-Klassendatei mit dem Namen TestRunner.java in C: \> JUNIT_WORKSPACE, um Testfälle auszuführen.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Kompilieren Sie die Klassen MessageUtil, Test Case und Test Runner mit javac.
C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java
Führen Sie nun den Test Runner aus, der die in der bereitgestellten Testfallklasse definierten Testfälle ausführt.
C:\JUNIT_WORKSPACE>java TestRunner
Überprüfen Sie die Ausgabe. Der Testfall testPrintMessage () markiert den fehlgeschlagenen Komponententest.
Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi!Robert
testPrintMessage(TestJunit): test timed out after 1000 milliseconds
false