測(cè)試套件意味著捆綁幾個(gè)單元測(cè)試用例并且一起執(zhí)行他們。在 JUnit 中,@RunWith 和 @Suite 注釋用來(lái)運(yùn)行套件測(cè)試。這個(gè)教程將向您展示一個(gè)例子,其中含有兩個(gè)測(cè)試樣例 TestJunit1 & TestJunit2 類,我們將使用測(cè)試套件一起運(yùn)行他們。
在目錄 C:\ > JUNIT_WORKSPACE 中創(chuàng)建一個(gè)被測(cè)試的 java 類命名為 MessageUtil.java
/*
* 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 String printMessage(){
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage(){
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
在目錄 C:\ > JUNIT_WORKSPACE 創(chuàng)建一個(gè) java 測(cè)試類叫做 TestJunit1.java。
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;
public class TestJunit1 {
String message = "Robert";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
assertEquals(message, messageUtil.printMessage());
}
}
在目錄 C:\ > JUNIT_WORKSPACE 創(chuàng)建一個(gè) java 測(cè)試類叫做 TestJunit2.java。
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;
public class TestJunit2 {
String message = "Robert";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Robert";
assertEquals(message,messageUtil.salutationMessage());
}
}
在目錄 C:\ > JUNIT_WORKSPACE 創(chuàng)建一個(gè) java 類文件叫做 TestSuite.java 來(lái)執(zhí)行測(cè)試用例。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestJunit1.class,
TestJunit2.class
})
public class JunitTestSuite {
}
在目錄 C:\ > JUNIT_WORKSPACE 創(chuàng)建一個(gè) java 類文件叫做 TestRunner.java 來(lái)執(zhí)行測(cè)試用例。
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(JunitTestSuite.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
使用 javac 命令編譯所有的 java 類
C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit1.java
TestJunit2.java JunitTestSuite.java TestRunner.java
現(xiàn)在運(yùn)行 Test Runner,即運(yùn)行所有的在之前 Test Case 類中定義的測(cè)試用例。
C:\JUNIT_WORKSPACE>java TestRunner
驗(yàn)證輸出
Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi Robert
true