Junit简单实现
Junit是一個測試框架,分分鐘入門,但它帶來的便捷高效是不言而喻的,如果以投入時間和回報的節省時間來算,它的性價比很高。本篇就以一個簡單的實例,結合注釋,將該框架的基本功能介紹一下。
引入依賴:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>對于一個簡單的功能模塊,我們可以這樣測試:
@Testpublic void testDemo0() {System.out.println("testDemo0()");}在eclipse中,我們可以選中方法名,而后右鍵Run as Junit Test,這個方法就會運行,執行成功即綠色通過,否則顯示紅色失敗。當出現多個功能模塊需要進行測試,比如:
??? @Test?? ?public void testDemo0() {
?? ??? ?int a = 1;
?? ??? ?int b = 2;
?? ??? ?My my = new My();
?? ??? ?int result = my.plus(a, b);
?? ??? ?System.out.println("plus測試結果" + result);
?? ?}
?? ?@Test
?? ?public void testDemo1() {
?? ??? ?int a = 1;
?? ??? ?int b = 2;
?? ??? ?My my = new My();
?? ??? ?int result = my.minus(a, b);
?? ??? ?System.out.println("minus測試結果" + result);
?? ?}
如果每個測試方法中,都要進行一些相同的處理,那么我們可以考慮用@Before和@After來進行簡化:
private int a;private int b;private int result;private My my;private String func;@Testpublic void testDemo0() {func = "plus";result = my.plus(a, b);}@Testpublic void testDemo1() {func = "minus";result = my.minus(a, b);}@Beforepublic void myBefore() {a = 1;b = 2;my = new My();}@Afterpublic void myAfter() {System.out.println(func + "測試結果:" + result);}結果打印:
plus測試結果:3 minus測試結果:-1這樣寫是不是清爽很多?當需要預處理和執行完之后處理的內容增多時,這種測試簡潔性就會更加明顯!這兩個注解就是用來對每個方法進行預處理和執行之后處理的,但是當整個測試類一開始只運行一次和結束測試時運行一次又該如何處理呢?答案是@BeforeClass,@AfterClass:
private int a;private int b;private int result;private My my;private String func;@Testpublic void testDemo0() {func = "plus";result = my.plus(a, b);}@Testpublic void testDemo1() {func = "minus";result = my.minus(a, b);}@Beforepublic void myBefore() {a = 1;b = 2;my = new My();}@Afterpublic void myAfter() {System.out.println(func + "測試結果:" + result);}@BeforeClasspublic static void myBeforeClass() {System.out.println("準備開始測試了哦:");}@AfterClasspublic static void myAfterClass() {System.out.println("所有測試全部結束!");}效果:
準備開始測試了哦: plus測試結果:3 minus測試結果:-1 所有測試全部結束!實際開發中的單元測試里,我們不會用這樣的輸出來觀察它的測試結果,而是用斷言,Assert有很多種方法,這里不一一介紹,簡單舉例:
private int a;private int b;private int result;private My my;private String func;@Testpublic void testDemo0() {func = "plus";result = my.plus(a, b);Assert.assertEquals(3, result);}@Beforepublic void myBefore() {a = 1;b = 2;my = new My();}@Afterpublic void myAfter() {System.out.println(func + "測試結果:" + result);}在斷言的assertEquals(expected, actual)中,第一個參數是期望方法結束后設置參數的值,第二個是執行完方法后這個真實的參數,如果二者相等,那么這個測試就算通過,如果不想等,就算失敗。另外,@Test還可以使用超時參數timeout,當整個方法體執行完的時間小于這個設置的參數并且斷言結果正確時,整個測試方法才算成功,否則就算斷言正確,整個方法依然是失敗的:
轉載于:https://www.cnblogs.com/bruceChan0018/p/5983016.html
總結
- 上一篇: windbg调试HEAP
- 下一篇: 1-2:网络初识之了解OSI和TCP/I