eclipse可以通過build path引入junit包
- 工程中引入junit
- 隨便寫一個類(計算加減乘除)
image.png
- 使用junit對類進行單元測試
右鍵需要單元測試的java文件,new,選擇junit test case
junit test case
image.png
下一步,選擇要測試的方法
next
完成,系統會自動生成一個junit測試文件
test
看一下該類引用的內容,以后可以自己創建測試類
import
里面包含空的測試方法,需要自己去寫用例
用例
執行run as的junit Test
會出現測試結果
junit result
控制臺輸出
console
測試了四個方法,setup觸發了四次。
結果只有第一個方法通過。理論上每個方法若是單獨測試第二個方法也會通過。應該是實例只有一個,而result一直有緩存值的問題。
測試方法之間對待測試類的改變并不是獨立的隔離狀態
setUp在調用每個方法之前都會觸發一次,應該是在測試方法前對類進行一些統一初始化用。
修改測試類,將待測試類實例化放置setup方法內試試。
image.png
失敗
image.png
猜測:難道只能保持一個活躍實例,先在待測試類增加一個重置變量result的方法,使得在測試方法前初始統一。
image.png
然后setup方法調用
image.png
結果測試正確
image.png
multiply是個未完成方法怎么辦?
不對方法進行測試,或者使用@ignore標簽
junit 標簽
image.png
結果
image.png
- 使用
首先測試類要引入org.junit.的內容,而使用到的assertEquals是 static org.junit.Assert.的內容。這兩個內容要引入。
@Before標簽就是在每個測試方法運行前,都會調用的方法
@Test標簽就是需要測試的方法,可傳入timeout=10000參數設置方法執行限制時間,如果測試異常觸發情況,可傳入expected = ArithmeticException. class ->觸發異常類,測試是否觸發異常
使用assertEquals傳入理想結果和實際結果對該測試方法的運行目的進行判斷是否正確
@After標簽 在執行完測試方法后會觸發的方法
@BeforeClass 在加載測試類時觸發方法,static
@AfterClass 在結束測試類時觸發方法,static
類標簽@Runwith為測試類指定特殊的Runner,一個類只能用一個runner
例如:
同一個方法,測試不同的邊界參數,可使用@RunWith(Parameterized. class )
parameterized
如果有多個測試類,想一起執行測試,可以使用@RunWith(Suite. class)
且一起使用標簽@SuiteClasses進行管理本次執行測試的類有哪些
suite
測試結果
image.png