Junit 單元測試使用總結

為了我為了你承諾發表於2011-12-23

什麼是單元測試

      我們寫了一套介面,一個類拿給別人用,怎樣保證沒有bug呢?測試一下。我們可以寫一個main方法測試一下啊!使用main方法測試好嗎?碼農們肯定異口同聲的說:“真的是不好”。

       使用main測試:

                    1.繁瑣不說,也不能好多方法一起測試

                    2.好的人工的看結果,檢查程式是否正確

 

  

Junit HelloWorld

     1 new project

          2 new  class

          3 建立classcase

 

放棄舊的斷言,使用hamcrest

     

1.         assertThat

2.         使用hamcrest的匹配方法

a)         更自然

3.         示例

a)         assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );

b)        assertThat( str, containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );

c)         assertThat( d, closeTo( 3.0, 0.3 ) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );

d)        assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );

 

FailureError

1.         Failure是指測試失敗

2.         Error是指測試程式本身出錯

JUnit4 Annotation

1.         @Test: 測試方法

a)         (expected=XXException.class)

b)        (timeout=xxx)

2.         @Ignore: 被忽略的測試方法

3.         @Before: 每一個測試方法之前執行

4.         @After: 每一個測試方法之後執行

5.         @BeforeClass: 所有測試開始之前執行

6.         @AfterClass: 所有測試結束之後執行

執行多個測試

注意

1.         遵守約定,比如:

a)         類放在test包中

b)        類名用XXXTest結尾

c)         方法用testMethod命名

 

 

 

 

 

相關文章