第2章 探索JUnit的核心(第一部分 認識JUnit)

第2章 探索JUnit的核心

JUnit核心類:測試類、測試集、測試運行器
org.junit . Assert
@see 查看JDK的assert用法: http://neilduan.iteye.com/blog/432125
設置VM argument -ea開啓斷言 -da關閉斷言
代碼例子:

JUnit 斷言方法示例
graphic
JUnit核心對象
測試類、測試用例(Test class 或 TestCase 或 test case)一個包含一個或者多個測試的類,而這些測試就是指那些用@Test註釋的方法。其中的一個測試方法能夠被稱做是一個「測試」。
測試集(Suite 或者 test suite),是一種把多個相關測試(測試用例)納入一組的便捷方式。若是你沒有爲測試類定義一個測試集,那麼JUnit會自動提供一個測試集。一般,一個測試集會將同一個包中的測試類納入一個組。
測試運行器(Runner 或 test runner)執行測試集的程序。

參數化測試Paramterized
Parameterized的測試運行器容許使用不一樣的參數屢次運行同一個測試。
代碼例子:

JUnit的測試運行器
JUnit4的測試用例和JUnit3.x編寫的測試用例使用的測試運行器是不一樣的:
JUnit4用例使用org.junit.runners.JUnit4
JUnit3.x用例使用org.junit.internal.runners.JUnit38ClassRunner,示例以下:
package org.neilside.examples.demo2;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith (value = org.junit.internal.runners.JUnit38ClassRunner. class )
public class TestWithJUnit38 extends junit.framework.TestCase {

       @Test
       public void test() {
             fail( "Not yet implemented" );
      }

}

JUnitCore facade
facade模式(外觀模式、門面模式),這種設計模式 提供一個統一的接口去訪問多個子系統的多個不一樣的接口,它爲子系統中的一組接口提供一個統一的高層接口。使子系統更容易使用。

自定義測試運行器
能夠經過擴展org.junit.runner.Runner的方式,定義你本身的測試運行器。

用Suite來組合測試

若是你在src/test/java 節點上運行JUnit,其實是默認的Suite在工做,它會掃描你全部的測試類。你能夠經過JUnit的console來查看各用例的執行狀況。
你也能夠寫一個Suite,把相關聯的一組測試用例集合到一塊兒。以下:
Eclipse能夠新建一個TestSuite

選擇要包含的測試用例( 不一樣包的用例能夠放在一個測試集裏

代碼以下:
package  org.neilside.examples.demo2;

import  org.junit.runner.RunWith;
import  org.junit.runners.Suite;
import  org.junit.runners.Suite.SuiteClasses;

@RunWith  (Suite.  class )     //1.指定運行器
@SuiteClasses  ({ ParameterizedTest.  class , TestWithJUnit38.  class  })  //2.指定測試類
public   class  Demo2TestSuite {   //命名以TestSuite結尾

}

如何組合一組測試集,其實跟上邊同樣
package org.neilside.examples.demo2;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import org.neilside.examples.demo1.CalculatorTest3;
import org.neilside.examples.demo1.Demo1TestSuite;

@RunWith (Suite. class )
@SuiteClasses ({ Demo2TestSuite. class , Demo1TestSuite. class , // 測試集 或 測試用例 均可以
            CalculatorTest3. class })
public class MasterTestSuite {
       @Test
       // 這個測試用例不會被執行
       public void test1() {
             // fail("Not yet implemented");
      }
}

在測試集裏,一個用例出現屢次會執行屢次。 




附件列表

相關文章
相關標籤/搜索