隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          JUnit4入門

          什么是單元測試?


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


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


          1.不能一起運行


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



          為什么要進行單元測試?


          重用測試,應(yīng)付將來的實現(xiàn)的變化


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



          JUnit4 HelloWorld


          1.new Project


          2.建立類


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


          3.建立testCase


          創(chuàng)建一個新的Junit 4 Test Case,選擇junit4,選擇要測試的類,next


          勾上要測試的方法,點finish


          會提示是否要導(dǎo)入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
          }


          }


          靜態(tài)導(dǎo)入了Assert類的所有靜態(tài)斷言方法,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,會看到一個綠色的“條”,則表示測試通過,這個方法沒問題


          現(xiàn)在我們修改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包,會產(chǎn)生沖突,


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


          所以單獨下載JUnit4的jar包并導(dǎo)入: 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區(qū)別:Failure是測試失敗,Error是指程序本身出錯
          比如調(diào)用 assertTrue("z大于8", z
          >= 8 ) 方法,如果不是 z>=8 時,會顯示Failure
          如果 在testAdd() 方法內(nèi),寫 int i = 1/0;
          此時會顯示Error


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


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



          @Test的屬性:


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


          此時測試會通過



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


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


          @Ignore:被忽略的測試方法,在方法前寫上它,執(zhí)行測試時,標(biāo)志這個方法不被測試


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


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


          @BeforeClass 和 @AfterClass必須為static:


          類初始化之前就已經(jīng)執(zhí)行了,他們的作用:配置環(huán)境,打開連接,關(guān)閉、釋放連接等


           



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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 临漳县| 亚东县| 郑州市| 迁安市| 邢台市| 元朗区| 遂平县| 阿克苏市| 合川市| 寿阳县| 孟州市| 墨脱县| 阿拉善右旗| 即墨市| 泸水县| 板桥市| 涞水县| 安平县| 大石桥市| 乌兰浩特市| 元谋县| 镇远县| 青岛市| 舒兰市| 依安县| 花莲县| 衡阳县| 镇江市| 武功县| 桑植县| 武乡县| 汝城县| 东城区| 苍山县| 峨边| 新绛县| 资溪县| 威信县| 军事| 和顺县| 舒城县|