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

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


咨詢
建站咨詢
