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

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");
}
}
|
在測試集裏,一個用例出現屢次會執行屢次。