myEclipse下使用Junit

From:百度文庫less

1、準備工做:ide

1. 1.       導入Junit jar包;測試

項目名--->Build Path—>Configure Build Path...  會彈出來一個框 在那四個選項選擇 Libraries  而後再選擇 右邊 第二個選項Add External Jars... 而後就是你JAR的路徑ui

2. 在項目目錄下新建一個Source Fold(通常命名爲 test);3d

3. 新建一個測試類(通常命名規則爲:被測試類名+Test,例如: HelloWordTest) 繼承junit.framework.TestCase類;rest

4. 編寫測試方法(方法名必須以test+用例方法名稱);對象

以下:blog

clip_p_w_picpath002

2、使用Junit進行測試

Junit被用來測試代碼,而且它是由可以測試不一樣條件的斷言方法(assertion method)組成,經常使用斷言方法以下:繼承

? assertEquals(a, b)

測試a是否等於b(a和b是原始類型數值(primitive value)或者必須爲實現比較而具備equal方法)ip

? assertFalse(a)

測試a是否爲false(假),a是一個Boolean數值。

? assertNotNull(a)

測試a是否非空,a是一個對象或者null。

? assertNotSame(a, b)

測試a和b是否沒有都引用同一個對象。

? assertNull(a)

測試a是否爲null,a是一個對象或者null。

? assertSame(a, b)

測試a和b是否都引用同一個對象。

? assertTrue(a)

測試a是否爲true(真),a是一個Boolean數值。

? 咱們使用這些方法來構建JUnit測試。當運行一個JUnit應用程序時,它打開本身的視圖(view)來當即指示哪一個測試經過了,哪一個測試失敗了。

被測試類

clip_p_w_picpath004

測試類

clip_p_w_picpath006

? 注:執行TestRunner.run(HelloWordTest.class)後會出現:

clip_p_w_picpath008clip_p_w_picpath010

? Time上的小點表示測試個數,若是測試經過則顯示OK。不然在小點的後邊標上F,表示該測試失敗。

? 綜上所敘:編寫測試類的基本步驟:

1>;擴展TestCase類;

2>;覆蓋runTest()方法(可選);

3>;寫一些testXXXXX()方法;

3、Junit4的新特性

一、Hamcrest的斷言語法——assertThat

1.導入junit 4和hamcrest-all jar包;

2.assertThat:

基本語法: assertThat( [value], [matcher statement] );

value 是接下來想要測試的變量值;

matcher statement 是使用 Hamcrest 匹配符來表達的對前面變量所指望的值的聲明,若是 value 值與 matcher statement 所表達的指望值相符,則測試成功,不然測試失敗。

二、使用hamcrest的匹配方法
2.一、通常匹配符

? allOf

匹配符代表若是接下來的全部條件必須都成立測試才經過,至關於「與」(&&)

assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) );

? anyOf

匹配符代表若是接下來的全部條件只要有一個成立則測試經過,至關於「或」(||)

assertThat( testedNumber, anyOf( greaterThan(16), lessThan(8) ) );

? anything

匹配符代表不管什麼條件,永遠爲true

assertThat( testedNumber, anything() );

? is

匹配符代表若是前面待測的object等於後面給出的object,則測試經過

assertThat( testedString, is( "developerWorks" ) );

? not

匹配符和is匹配符正好相反,代表若是前面待測的object不等於後面給出的object,則測試經過

assertThat( testedString, not( "developerWorks" ) );

2.二、字符串相關匹配符

? containsString

匹配符代表若是測試的字符串testedString包含子字符串"developerWorks"則測試經過

assertThat( testedString, containsString( "developerWorks" ) );

? endsWith

匹配符代表若是測試的字符串testedString以子字符串"developerWorks"結尾則測試經過

assertThat( testedString, endsWith( "developerWorks" ) );

? startsWith

匹配符代表若是測試的字符串testedString以子字符串"developerWorks"開始則測試經過

assertThat( testedString, startsWith( "developerWorks" ) );

? equalTo

匹配符代表若是測試的testedValue等於expectedValue則測試經過,equalTo能夠測試數值之間,字符串之間和對象之間是否相等,至關於Object的equals方法

assertThat( testedValue, equalTo( expectedValue ) );

? equalToIgnoringCase

匹配符代表若是測試的字符串testedString在忽略大小寫的狀況下等於 "developerWorks"則測試經過

assertThat( testedString, equalToIgnoringCase( "developerWorks" ) );

? equalToIgnoringWhiteSpace

匹配符代表若是測試的字符串testedString在忽略頭尾的任意個空格的狀況下等於"developerWorks"則測試經過,注意:字符串中的空格不能被忽略

assertThat( testedString, equalToIgnoringWhiteSpace( "developerWorks" ) );

2.三、數值相關匹配符

? closeTo

匹配符代表若是所測試的浮點型數testedDouble在20.0±0.5範圍以內則測試經過

assertThat( testedDouble, closeTo( 20.0, 0.5 ) );

? greaterThan

匹配符代表若是所測試的數值testedNumber大於16.0則測試經過

assertThat( testedNumber, greaterThan(16.0) );

? lessThan

匹配符代表若是所測試的數值testedNumber小於16.0則測試經過

assertThat( testedNumber, lessThan (16.0) );

? greaterThanOrEqualTo

匹配符代表若是所測試的數值testedNumber大於等於16.0則測試經過

assertThat( testedNumber, greaterThanOrEqualTo (16.0) );

? lessThanOrEqualTo

匹配符代表若是所測試的數值testedNumber小於等於16.0則測試經過

assertThat( testedNumber, lessThanOrEqualTo (16.0) );

2.四、collection相關匹配符

? hasEntry

匹配符代表若是測試的Map對象mapObject含有一個鍵值爲"key"對應元素值爲"value"的Entry項則測試經過

assertThat( mapObject, hasEntry( "key", "value" ) );

? hasItem

匹配符代表若是測試的迭代對象iterableObject含有元素「element」項則測試經過

assertThat( iterableObject, hasItem ( "element" ) );

? hasKey

匹配符代表若是測試的Map對象mapObject含有鍵值「key」則測試經過

assertThat( mapObject, hasKey ( "key" ) );

? hasValue

匹配符代表若是測試的Map對象mapObject含有元素值「value」則測試經過

assertThat( mapObject, hasValue ( "key" ) );

2.五、Matcher 匹配符聯合使用

? not和equalTo

表示「不等於」

assertThat( something, not( equalTo( "developer" ) ) );

? not和containsString

表示「不包含子字符串」

assertThat( something, not( containsString( "Works" ) ) );

? anyOf和containsString

表示「包含任何一個子字符串」

assertThat(something, anyOf(containsString("developer"), containsString("Works")));

三、JUnit4 註解
? @Test: 測試方法
? @Ignore: 被忽略的測試方法
? @Before: 每個測試方法以前運行
? @After: 每個測試方法以後運行
? @BeforeClass: 全部測試開始以前運行
? @AfterClass: 全部測試結束以後運行

4、附錄

Junit4註解式測試方法示例(測試類不用繼承TestCase)

被測試類

clip_p_w_picpath012

測試類

clip_p_w_picpath014

clip_p_w_picpath016

 

免費共享資源,從我作起!

相關文章
相關標籤/搜索