使用JUnit插件的場景
Java是完全面向對象語言,所有功能都在類中實現,新人測試代碼時,一般都會對每個類寫一個main函數來調用其功能,JUnit正是取代這種繁瑣操作的實用工具。它能夠不依賴main直接對代碼測試。
測試平臺:IntelliJ IDEA 2017.2
JUnit安裝與配置
下載插件:File -> Settings -> Plugins
,搜索JUnit下載
實際上IDEA自帶JUnit插件,不用再下載安裝,但新建的java工程需要配置它的環境,
配置環境:File -> Project Structure
,1點擊左列的Libraries,2點擊上方的加號,3在本地IDEA安裝目錄的lib下找到圖中這三個插件添加進來
新建工程,編寫測試demo
新建工程:File -> New -> Project,自定義項目名稱(示例爲JUnitTest)和項目路徑
demo代碼①:在src文件夾新建Java Class文件(示例爲TestDemo.java),觀察一個最簡單的單元測試Test用法
import org.junit.Test;
public class TestDemo {
@Test
public void show1(){
System.out.println("測試方法一");
}
@Test
public void show2(){
System.out.println("測試方法二");
}
}
可見,不需要main函數,TestDemo類的方法也可以Run。
demo代碼②:在src文件夾新建Java Class文件(示例爲Calculator.java),觀察demo類中的main函數測試和JUnit測試的不同
// 類定義和main函數測試,這裏main方法暫時取消註釋
public class Calculator {
public int add(int x, int y) { //加法
return x + y;
}
public int sub(int x, int y) { //減法
return x - y;
}
public int mul(int x, int y) { //乘法
return x * y;
}
public int div(int x, int y) { //除法
return x / y;
}
public int div2(int x, int y) { //除法 做了異常判斷
try {
int z = x / y;
} catch (Exception e) {
e.printStackTrace();
}
return x / y;
}
public void unCompleted(int x, int y) { //未完成的模塊:例如平方、開方等等
//TODO
}
// public static void main(String[] args) { // 傳統代碼測試
// int a = 8;
// int b = 2;
// Calculator calculator = new Calculator();
// if (calculator.add(a, b) == 10) {
// System.out.println("Test passed!");
// } else {
// System.out.println("Test failed!");
// }
// if (calculator.sub(a, b) == 6) {
// System.out.println("Test passed!");
// } else {
// System.out.println("Test failed!");
// }
// if (calculator.mul(a, b) == 16) {
// System.out.println("Test passed!");
// } else {
// System.out.println("Test failed!");
// }
// if (calculator.div(a, b) == 4) {
// System.out.println("Test passed!");
// } else {
// System.out.println("Test failed!");
// }
// System.out.println(calculator.div2(a,0));
// }
}
再使用JUnit測試,將main方法註釋,選中類名Calculator,使用快捷鍵①CTRL+SHIFT+T -> Create New Test
,或者②ALT+Enter -> Create Test
,二者是一樣的。在對話框中填入的測試類的名稱和勾選需要測試的方法,則會自動新建一個測試用例文件(示例爲CalculatorJUnitTest.java)
注1:測試的方法必須是public,且不能有static修飾。
注2:若快捷鍵無效,可在 Settings -> Keymap 裏搜索test查詢或修改對應快捷鍵。
// JUnit建立的測試類框架,每個方法內部自定義編寫
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorJUnitTest {
Calculator calculator = new Calculator();
@Test
public void add() throws Exception {
if (calculator.add(8, 2) == 10) {
System.out.println("Test add passed!");
} else {
System.out.println("Test add failed!");
}
}
@Test
public void sub() throws Exception {
if (calculator.sub(8, 2) == 6) {
System.out.println("Test sub passed!");
} else {
System.out.println("Test sub failed!");
}
}
@Test
public void mul() throws Exception {
if (calculator.mul(8, 2) == 16) {
System.out.println("Test mul passed!");
} else {
System.out.println("Test mul failed!");
}
}
@Test
public void div() throws Exception {
}
@Test
public void div2() throws Exception {
}
}
可見,JUnit可以更清晰有效地完成各個方法的測試。測試單個方法時,在該方法名上右鍵點Run。
待解決疑問
1)JUnit環境配置時,有同學在Settings裏搜索JUnit出現了JUnit Generator,我沒有搜到,不知道是不是版本問題。
2)Create Test或Create New Test時沒有新建test文件夾,不知道有沒有設置錯誤。
參考:
[1] java單元測試(@Test)
[2] IDEA中單元測試@Test使用
[3] IntelliJ IDEA快速自動生成Junit測試類