怎樣在IDEA中使用JUnit4和JUnitGenerator V2.0自動生成測試模塊

   由於項目的須要,因此研究了一下自動生成測試代碼。將經驗記錄下來,總會有用的。我我的認爲,好記性不如多作筆記多反思總結。數據庫

1.    前提條件

  • 開發環境已正確配置
  • 工程已解決JUnit依賴關係(pom.xml)
  • 我用的是4.12版本:
    1 <dependency>
    2     <groupId>junit</groupId>
    3     <artifactId>junit</artifactId>
    4     <version>4.12</version>
    5 </dependency>

     

 

2.    IDEA中JUnit配置

  打開Settings窗口搜索junit,如圖(兩個插件都勾選添加):微信

 

  JUnitGenerator V2.0插件,能夠幫助咱們自動生成測試代碼。若是搜索junit沒有JUnitGenerator V2.0時,以下圖操做(下載添加):ide

 

 

 

  調用模板的方法(Alt+Insert)默認測試全部全部方法。若想要動態個性化生成,能夠在所要測試的類頁面上,使用該快捷操做Ctrl + Shift + T,以下圖個性化設置:函數

 

 

  如今能夠經過右鍵菜單在這個類上運行'***測試類名**'來進行測試,或經過Run → Edit Configurations來進行。單元測試

 

 

3.    JUnit經常使用斷言及註解

 

  JUnit爲咱們提供了一些輔助函數,他們用來幫助咱們肯定被測試的方法是否按照預期的效果正常工做,一般,把這些輔助函數稱爲斷言。測試

斷言核心方法this

註解spa

 

 

  一個測試類單元測試的執行順序爲:.net

    @BeforeClass –> @Before –> @Test –> @After –> @AfterClass插件

  每個測試方法的調用順序爲:

    @Before –> @Test –> @After

 

  代碼示例:

1 public class JunitFlowTest { 
 2     /* * 
 3     *1. @BeforeClass修飾的方法會在全部方法被調用前被執行, 
 4     * 並且該方法是靜態的,因此當測試類被加載後接着就會運行它, 
 5     * 並且在內存中它只會存在一份實例,它比較適合加載配置文件。 
 6     * 2. @AfterClass所修飾的方法一般用來對資源的清理,如關閉數據庫的鏈接 
 7     * 3. @Before和@After會在每一個測試方法的先後各執行一次。 
 8     * */ 
 9     @BeforeClass 
10     public static void setUpBeforeClass() throws Exception { 
11         System.out.println("this is beforeClass..."); 
12     } 
13     @AfterClass 
14     public static void tearDownAfterClass() throws Exception { 
15         System.out.println("this is afterClass...");
16     } 
17     @Before 
18     public void setUp() throws Exception { 
19         System.out.println("this is before..."); 
20     } 
21     
22     /**
23     * 即便在@Before註解方法、@Test註解方法中拋出了異常,
24     * 全部的@After註解方法依然會被執行
25     */
26     @After 
27     public void tearDown() throws Exception { 
28         System.out.println("this is after"); 
29     } 
30     
31     /* * 
32     * 
33     * 1. Failure通常由單元測試使用的斷言方法判斷失敗所引發的,
34     *  這經表示測試點發現了問題 
35     * ,就是說程序輸出的結果和咱們預期的不同。 
36     * 2. error是由代碼異常引發的,它能夠產生於測試代碼自己的錯誤,
37     *  也能夠是被測試代碼中的 
38     * 一個隱藏的bug 
39     * 3.測試用例不是用來證實你是對的,而是用來證實你沒有錯。 
40     */ 
41     @Test 
42     public void testAdd() { 
43         assertEquals(5, new Calculate().add(3,3)); 
44     } 
45     @Test 
46     public void testDivide() { 
47         assertEquals(3, new Calculate().divide(6, 0));
48     }
49 
50 }

<!-- Start -->

獲知及時信息,請關注個人我的微信訂閱號:0與1的那點事

<!-- End -->

相關文章
相關標籤/搜索