隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          JUnit4入門

          什么是單元測試?


          寫了個類,要給別人用,會不會有Bug?怎么辦?測試


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


          1.不能一起運行


          2.大多數情況下需要人為的觀察輸出是否正確



          為什么要進行單元測試?


          重用測試,應付將來的實現的變化


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



          JUnit4 HelloWorld


          1.new Project


          2.建立類


          public class T {
          public int add(int x , int
          y){
          return x + y;
          }
          }


          3.建立testCase


          創建一個新的Junit 4 Test Case,選擇junit4,選擇要測試的類,next


          勾上要測試的方法,點finish


          會提示是否要導入junit4的jar包,如果想使用MyEclipse自帶的,點ok即可


          之后會生成如下代碼:


          import static org.junit.Assert.*;


          import org.junit.Test;


          public class TTest {


          @Test
          public final void testAdd() {
          fail("Not
          yet implemented"); // TODO
          }


          }


          靜態導入了Assert類的所有靜態斷言方法,fail()只是其中一種


          修改下自動生成的testAdd()方法:


          @Test
          public final void testAdd() {
          int z = new T().add(3,
          5);
          assertEquals(8, z);
          }


          assertEquals(期望得到的值,實際的值),此時我們希望測試T類的add()方法, 3 + 5
          是否等于8


          之后,右鍵,Run as ,JUnit Test運行測試


          JUnit4入門


          左邊的小窗口為JUnit,會看到一個綠色的“條”,則表示測試通過,這個方法沒問題


          現在我們修改testAdd()方法:


          JUnit4入門
          此時,z不等于9,左邊的“條”就變成紅色,表示不通過



          還可以寫多個斷言一起進行測試,其中每個斷言方法,
          都重載了一個(String message) 代表如果出錯了,會提示什么消息



          @Test
          public final void testAdd() {
          int z = new
          T().add(3, 5);
          assertEquals(8, z);
          assertTrue("z大于8", z > 8 );
          }


          JUnit4入門



          ----------------------------------------


          一種新的測試方法:assertThat()
          使用它時,需要下載jar包:hamcrest-all-1.3.0RC2.jar


          如果用MyEclipse自帶的JUnit4的jar包,會產生沖突,


          測試時,會報一個Security的異常,ClassLoader() 原因是加載類的加載器不同


          所以單獨下載JUnit4的jar包并導入: junit-4.10.jar



          @Test
          public final void testAdd() {
          int z = new
          T().add(3, 5);
          assertEquals(8,
          z);
          assertTrue("z大于8", z >= 8 );
          assertThat(z,
          is(8)); //測試這個對象是否等于8
          assertThat(z,
          allOf(greaterThan(5),lessThan(10))); //判斷z 大于5并且小于10
          }


          具體方法信息查看API http://www.jmock.org/javadoc/2.3.0/org/hamcrest/Matchers.html


          ---------------------------------------------


          Failure 和 Error區別:Failure是測試失敗,Error是指程序本身出錯
          比如調用 assertTrue("z大于8", z
          >= 8 ) 方法,如果不是 z>=8 時,會顯示Failure
          如果 在testAdd() 方法內,寫 int i = 1/0;
          此時會顯示Error


          執行多個測試方法:
          自定義測試方法:@Test
          public void testDivide(){}


          執行JUnit Test時,會一起測試這個類中所有方法



          @Test的屬性:


          @Test(expected=java.lang.ArithmeticException.class) //希望他拋出異常
          public
          void testDevide(){
          int z = new T().devide(3, 0);
          //除數為0
          assertThat(z, is(0));
          }


          此時測試會通過



          @Test(timeout = 100) //在100毫秒內運行結束這個方法


          用來測試一些算法等,如果100毫秒內完成了這個方法的執行,則通過


          @Ignore:被忽略的測試方法,在方法前寫上它,執行測試時,標志這個方法不被測試


          @Before:每一個測試方法之前運行
          @After:每一個測試方法之后運行


          ----------------------------------
          @BeforeClass:所有測試開始之前運行
          @AfterClass:所有測試結束之后運行


          @BeforeClass 和 @AfterClass必須為static:


          類初始化之前就已經執行了,他們的作用:配置環境,打開連接,關閉、釋放連接等


           



          posted on 2012-04-22 16:05 hantai 閱讀(183) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 涞源县| 堆龙德庆县| 祁连县| 肥东县| 太康县| 扬中市| 陇西县| 巴东县| 手机| 东丰县| 广丰县| 抚州市| 六盘水市| 白城市| 昌图县| 望江县| 怀宁县| 普洱| 盐山县| 盐池县| 彭山县| 孝昌县| 江西省| 棋牌| 渭南市| 霍邱县| 晋城| 双牌县| 铁力市| 石阡县| 东海县| 五家渠市| 石河子市| 九江县| 乐山市| 白玉县| 扶风县| 噶尔县| 华宁县| 雷山县| 双峰县|