天天看點

單元測試

什麼是單元測試

寫了個類,要給别人用,會不會有bug?怎麼辦?測試一下。

用main方法測試好不好?不好!

不能一起運作!

大多數情況下需要人為的觀察輸出确定是否正确

為什麼要進行單元測試

重用測試,應付将來的實作的變化。

提高士氣,明确知道我的東西是沒問題的。

junit4 helloworld

new project

建立類

建立testcase

assertthat

使用hamcrest的比對方法

放棄舊的斷言,使用hamcrest斷言

a) 更自然

示例

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" ) );

failure和error

failure是指測試失敗

error是指測試程式本身出錯

@test: 測試方法

junit4 annotation

a) (expected=xxexception.class)

b) (timeout=xxx)

@ignore: 被忽略的測試方法

@before: 每一個測試方法之前運作

@after: 每一個測試方法之後運作

@beforeclass: 所有測試開始之前運作

@afterclass: 所有測試結束之後運作

遵守約定,比如:

運作多個測試

注意

a) 類放在test包中

b) 類名用xxxtest結尾

c) 方法用testmethod命名

其他架構

testng

繼續閱讀