JUnit學習筆記-IDEA編譯器中JUnit的安裝和使用

來源:互聯網
上載者:User

一、什麼是JUnit
JUnit是一個Java語言的單元測試架構。單元測試是一種白盒測試,用於測試代碼的功能模組(單個功能)。
二、Intellij IDEA中安裝JUnit外掛程式
1.選擇File菜單的Settings…選項

2.選擇Settings…介面中的Plguins選項內的Browse repositories選項

3.在搜尋方塊中輸入JUnit,在下面菜單中選擇JUnit Generator V2.0安裝

(因為我已經安裝,故沒有顯示install選項)
4.安裝完成,在待測試類別中按產生方法的快速鍵ALT+INS,出現JnitTest方法。

三、使用Junit進行單元測試的方法
1.產生單元測試類
在待測試的類中使用快速鍵ALT+INS菜單中選擇JUnit Test—->JUnit4,自動產生測試類別。

解決編碼問題,點擊reload in another encoding(紅色橢圓標記處)選擇預設編碼(GBK)

解決註解無法識別問題,此時註解都為cannot resolve狀態,原因是JUnit4未加入項目的classpath,使用ALT+ENTER快速鍵將JUnit4添加到classpath即可

2.單元測試類中的方法和註解說明
·所有方法必須無傳回值(public void)且不能有參數
·@Test註解
說明此方法為單元測試方法,可以單獨執行此方法實現測試功能。
·@Before註解
運行每個單元測試方法之前執行此方法。
·@After註解
每個單元測試方法執行結束後執行此方法。
·@BeforeClass註解(方法必須為static)
在所有單元測試方法執行之前執行此方法。
·@AfterClass註解(方法必須為static)
在所有單元測試方法執行之後執行此方法。
·@Ignore註解
忽略此方法,在執行測試類別時忽略此方法(不執行)。
3.Assert(斷言)類中的方法實現自動化結果檢查
.assertEquals(expected,actual)判斷期望值與實際值是否相同
.assertNull(object)判斷是否為空白
.assertNotNull(object)判斷是否非空
.assertTrue(condition)判斷布爾值是否為真
.assertFalse(condition)判斷布爾值是否為假
四、具體的樣本
待測試的Calculator類代碼:(實現加減乘除功能)

public class Calculator {    public int add(int a,int b){ return a+b; }    public int sub(int a,int b){ return a-b; }    public int mul(int a,int b){ return a*b; }    public int div(int a,int b){        if(b==0){            throw new RuntimeException("除數不能為0");        }        return a/b;    }}

1.測試add方法(CalculatorTest類中)

/** * Method: add(int a, int b) */ @Testpublic void testAdd() throws Exception {     int a = 5; int b = 7; int exp = 12;    Assert.assertEquals(exp, new Calculator().add(a,b));} 

選中testAdd方法名後滑鼠右鍵選擇Run’testAdd()’即可運行此方法,運行結果如下圖:(期望值與實際值相同,測試通過顯示為綠色;若測試不通過則顯示為紅色)

2.測試多個方法

public class CalculatorTest {@BeforeClasspublic static void beforeClass() throws Exception{    System.out.println("BeforeClass");}@AfterClasspublic static void afterClass() throws Exception{    System.out.println("AfterClass");}@Beforepublic void before() throws Exception {    System.out.println("Before");}@Afterpublic void after() throws Exception {    System.out.println("After");}/**  * Method: add(int a, int b) */ @Testpublic void testAdd() throws Exception { //TODO: Test goes here...    int a = 5; int b = 7; int exp = 12;    Assert.assertEquals(exp, new Calculator().add(a,b));} /** * Method: sub(int a, int b) */ @Testpublic void testSub() throws Exception { //TODO: Test goes here...    int a = 15; int b = 7; int exp = 8;    Assert.assertEquals(exp, new Calculator().sub(a,b));} /** * Method: mul(int a, int b) */ @Testpublic void testMul() throws Exception { //TODO: Test goes here...    int a = 5; int b = 7; int exp = 35;    Assert.assertEquals(exp, new Calculator().mul(a,b));} /** * Method: div(int a, int b) */ @Testpublic void testDiv() throws Exception { //TODO: Test goes here...    int a = 5; int b = 1; int exp = 5;    Assert.assertEquals(exp, new Calculator().div(a,b));} } 

運行測試類別結果

由結果可見進行測試的四個方法全部通過,且被BeforeClass註解的方法在最開始執行,被AfterClass註解的方法在所有測試結束時執行,被Before註解的方法在每個測試開始前執行,被After註解的方法在每個測試結束時執行。
4.測試非法資料
將testDiv方法中除數b設為非法資料0,運行結果如下

顯示testDiv未通過,拋出RuntimeException。(亂碼原因為此處選擇的編碼是GBK,使用UTF-8即可解決)
將預期異常添加到註解參數中測試:

@Test(expected = java.lang.RuntimeException.class)public void testDiv() throws Exception { //TODO: Test goes here...    int a = 5; int b = 0; int exp = 5;    Assert.assertEquals(exp, new Calculator().div(a,b));} 

此處將預期拋出的異常添加到註解@Test的參數中,再次運行結果如下

因為錯誤資料引起的異常為預期出現的異常,故測試通過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.