新聞中心
現(xiàn)在我們將應(yīng)用簡單的例子來一步一步教你如何使用 JUnit。

大祥網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,大祥網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為大祥近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的大祥做網(wǎng)站的公司定做!
JUnit的一些注意事項:
- 測試方法必須使用 @Test 修飾
- 測試方法必須使用 public void 進(jìn)行修飾,不能帶參數(shù)
- 一般使用單元測試會新建一個 test 目錄存放測試代碼,在生產(chǎn)部署的時候只需要將 test 目錄下代碼刪除即可
- 測試代碼的包應(yīng)該和被測試代碼包結(jié)構(gòu)保持一致
- 測試單元中的每個方法必須可以獨(dú)立測試,方法間不能有任何依賴
- 測試類一般使用 Test 作為類名的后綴
- 測試方法使一般用 test 作為方法名的前綴
測試失敗說明:
- Failure:一般是由于測試結(jié)果和預(yù)期結(jié)果不一致引發(fā)的,表示測試的這個點(diǎn)發(fā)現(xiàn)了問題
- error:是由代碼異常引起的,它可以產(chǎn)生于測試代碼本身的錯誤,也可以是被測試代碼中隱藏的 bug
一些常用注解:
- @Test:將一個普通方法修飾成一個測試方法 @Test(excepted=xx.class): xx.class 表示異常類,表示測試的方法拋出此異常時,認(rèn)為是正常的測試通過的 @Test(timeout = 毫秒數(shù)) :測試方法執(zhí)行時間是否符合預(yù)期
- @BeforeClass: 會在所有的方法執(zhí)行前被執(zhí)行,static 方法 (全局只會執(zhí)行一次,而且是第一個運(yùn)行)
- @AfterClass:會在所有的方法執(zhí)行之后進(jìn)行執(zhí)行,static 方法 (全局只會執(zhí)行一次,而且是最后一個運(yùn)行)
- @Before:會在每一個測試方法被運(yùn)行前執(zhí)行一次
- @After:會在每一個測試方法運(yùn)行后被執(zhí)行一次
- @Ignore:所修飾的測試方法會被測試運(yùn)行器忽略
- @RunWith:可以更改測試運(yùn)行器 org.junit.runner.Runner
- Parameters:參數(shù)化注解
創(chuàng)建一個類
- 在C:\ > JUNIT_WORKSPACE 路徑下創(chuàng)建一個名為 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;
}
}
創(chuàng)建 Test Case 類
- 創(chuàng)建一個名為 TestJunit.java 的測試類。
- 向測試類中添加名為 testPrintMessage() 的方法。
- 向方法中添加 Annotaion @Test。
- 執(zhí)行測試條件并且應(yīng)用 Junit 的 assertEquals API 來檢查。
在C:\ > JUNIT_WORKSPACE路徑下創(chuàng)建一個文件名為 TestJunit.java 的類
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestJunit {
String message = "Hello World";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
assertEquals(message,messageUtil.printMessage());
}
}
創(chuàng)建 Test Runner 類
- 創(chuàng)建一個 TestRunner 類
- 運(yùn)用 JUnit 的 JUnitCore 類的 runClasses 方法來運(yùn)行上述測試類的測試案例
- 獲取在 Result Object 中運(yùn)行的測試案例的結(jié)果
- 獲取 Result Object 的 getFailures() 方法中的失敗結(jié)果
- 獲取 Result object 的 wasSuccessful() 方法中的成功結(jié)果
在 C:\ > JUNIT_WORKSPACE 路徑下創(chuàng)建一個文件名為 TestRunner.java 的類來執(zhí)行測試案例
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());
}
} 用 javac 編譯 MessageUtil、Test case 和 Test Runner 類。
C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java現(xiàn)在運(yùn)行 Test Runner,它可以運(yùn)行在所提供的 Test Case 類中定義的測試案例。
C:\JUNIT_WORKSPACE>java TestRunner檢查運(yùn)行結(jié)果
Hello World
true現(xiàn)在更新 C:\ > JUNIT_WORKSPACE 路徑下的 TestJunit,并且檢測失敗。改變消息字符串。
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestJunit {
String message = "Hello World";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
message = "New Word";
assertEquals(message,messageUtil.printMessage());
}
}讓我們保持其他類不變,再次嘗試運(yùn)行相同的 Test Runner
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());
}
}現(xiàn)在運(yùn)行在 Test Case 類中提供的即將運(yùn)行測試案例的 Test Runner
C:\JUNIT_WORKSPACE>java TestRunner檢查運(yùn)行結(jié)果
Hello World
testPrintMessage(TestJunit): expected:<[New Wor]d> but was:<[Hello Worl]d>
false 新聞標(biāo)題:創(chuàng)新互聯(lián)JUint教程:JUnit-基本用法
文章源于:http://www.dlmjj.cn/article/dhcjehi.html


咨詢
建站咨詢
