隨筆 - 251  文章 - 504  trackbacks - 0
          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

          留言簿(14)

          隨筆分類

          收藏夾

          My Favorite Web Sites

          名Bloger

          非著名Bloger

          搜索

          •  

          積分與排名

          • 積分 - 202782
          • 排名 - 284

          最新評論

          3.6、JUnit一個實例

          在控制臺中簡單的范例如下:
          1、寫個待測試的Triangle類,創建一個TestCase的子類ExampleTest:
          2、 ExampleTest中寫一個或多個測試方法,斷言期望的結果(注意:以test作為待測試的方法的開頭,這樣這些方法可以被自動找到并被測試)
          3、 ExampleTest中寫一個suite()方法,它會使用反射動態的創建一個包含所有的testXxxx方法的測試套件:
          4、 ExampleTest可以寫setUp()、tearDown()方法,以便于在測試時初始化或銷毀測試所需的所有變量和實例。(不是必須的)

          5、寫一個main()方法以文本運行器或其它GUI的方式方便的運行測試

          6、編譯ExampleTest,執行測試。

          3.7、Eclipse中JUnit的使用

          Eclipse自帶了一個JUnit的插件,不用安裝就可以在你的項目中開始測試相關的類,并且可以調試你的測試用例和被測試類。

          使用步驟如下:

          1、新建一個測試用例,點擊“File->New->Other…菜單項,在彈出的“New”對話框中選擇”Java->JUnit”,下的TestCase 或TestSuite,就進入“New JUnit TestCase”對話框

          2、在“New JUnit TestCase”對話框填寫相應的欄目,主要有Name(測試用例名),SuperClass(測試的超類一般是默認的junit.framework.TestCase),Class Under Test(被測試的類),Source Folder(測試用例保存的目錄),Package(測試用例包名),及是否自動生成main,setUp,tearDown方法。

          3、如果點擊下面的”Next>”按鈕,你還可以直接勾選你想測試的被測試類的方法,Eclipse將自動生成與被選方法相應的測試方法,點擊“Fishish”按鈕后一個測試用例就創建好了。

          4、編寫完成你的測試用例后,點擊“Run”按鈕就可以看到運行結果了。

          3.8、JUnit的擴展應用

          以下羅列了些JUnit的擴展應用:

          JUnit + HttpUnit=WEB功能測試工具
          JUnit + hansel =代碼覆蓋測試工具
          JUnit + abbot =界面自動回放測試工具
          JUnit + dbunit =數據庫測試工具
          JUnit + junitperf=性能測試工具

          3.9、一些使用JUnit經驗

          不要用TestCase的構造函數初始化,而要用setUp()和tearDown()方法。
          不要依賴或假定測試運行的順序,因為JUnit利用Vector保存測試方法。所以不同的平臺會按不同的順序從Vector中取出測試方法。
          避免編寫有副作用的TestCase。例如:如果隨后的測試依賴于某些特定的交易數據,就不要提交交易數據。簡單的回滾就可以了。
          當繼承一個測試類時,記得調用父類的setUp()和tearDown()方法。
          將測試代碼和工作代碼放在一起,一邊同步編譯和更新。
          測試類和測試方法應該有一致的命名方案。如在工作類名前加上test從而形成測試類名。
          確保測試與時間無關,不要依賴使用過期的數據進行測試。導致在隨后的維護過程中很難重現測試。
          如果你編寫的軟件面向國際市場,編寫測試時要考慮國際化的因素。不要僅用母語的Locale進行測試。
          盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。
          測試要盡可能地小,執行速度快。


          參考資料與附件

          1. http:// www.junit.org JUnit官方網站

          2. http://bbs.51cmm.com 的測試論壇

          3. http://www.uml.org.cn 的軟件測試專欄

          4. 單元測試 《程序員》 2002年7期

          5. JUnit設計模式分析 《程序員》2003年6期

          6. 《軟件測試和JUnit實踐》

          7. 附件Triangle.java 一個要測試的類


          Triangle.java

          /**

          * this is Triangle class

          * @author liujun

          */

          public class Triangle

          {

          //定義三角形的三邊

          protected long lborderA = 0;

          protected long lborderB = 0;

          protected long lborderC = 0;

          ?

          //構造函數

          public Triangle(long lborderA,long lborderB,long lborderC)

          {

          this.lborderA = lborderA;

          this.lborderB = lborderB;

          this.lborderC = lborderC;

          }

          /**

          * 判斷是否是三角形

          * 是返回ture;不是返回false

          */

          public boolean isTriangle(Triangle triangle)

          {

          boolean isTrue = false;

          //判斷邊界,大于0小于200,出界返回false

          if((triangle.lborderA>0&&triangle.lborderA<200)

          &&(triangle.lborderB>0&&triangle.lborderB<200)

          &&(triangle.lborderC>0&&triangle.lborderC<200))

          {

          //判斷兩邊之和大于第三邊

          if((triangle.lborderA<(triangle.lborderB+triangle.lborderC))

          &&(triangle.lborderB<(triangle.lborderA+triangle.lborderC))

          &&(triangle.lborderC<(triangle.lborderA+triangle.lborderB)))

          isTrue = true;

          }

          return isTrue;

          }

          ?

          /**

          * 判斷三角形類型

          * 等腰三角形返回字符串“等腰三角形”;

          * 等邊三角形返回字符串“等邊三角形”;

          * 其它三角形返回字符串“不等邊三角形”;

          */

          public String isType(Triangle triangle)

          {

          String strType = "";

          // 判斷是否是三角形

          if(this.isTriangle(triangle))

          {

          //判斷是否是等邊三角形 if(triangle.lborderA==triangle.lborderB&&triangle.lborderB==triangle.lborderC)

          strType = "等邊三角形";

          //判斷是否是不等邊三角形

          else if((triangle.lborderA!=triangle.lborderB)&&

          (triangle.lborderB!=triangle.lborderC)&&

          (triangle.lborderA!=triangle.lborderC))

          strType = "不等邊三角形";

          else

          strType="等腰三角形";

          }

          return strType;

          }

          }

          8. 附件ExampleTest.java 一個測試用例類

          ExampleTest.java

          import junit.framework.*;

          /**

          * Some tests.

          *

          */

          public class ExampleTest extends TestCase {

          public Triangle triangle;

          //初始化

          protected void setUp() {

          triangle=new Triangle(10,2,9);

          }

          ?

          public static Test suite() {

          return new TestSuite(ExampleTest.class);

          }

          //函數isTriangle()的測試用例

          public void testIsTriangle() {

          assertTrue(triangle.isTriangle(triangle));

          }

          //函數isType()的測試用例

          public void testIsType()

          {

          assertEquals("這次測試",triangle.isType(triangle),"不等邊三角形");

          }

          ?

          //執行測試

          public static void main (String[] args) {

          //文本方式

          junit.textui.TestRunner.run(suite());

          //Swingui方式

          //junit.swingui.TestRunner.run(suite().getClass());

          //awtui方式

          //junit.awtui.TestRunner.run(suite().getClass());

          ?

          }

          }

          posted on 2006-11-26 15:16 matthew 閱讀(484) 評論(0)  編輯  收藏 所屬分類: 軟件測試技術
          主站蜘蛛池模板: 渝中区| 望都县| 图片| 措美县| 商河县| 尼玛县| 基隆市| 太仓市| 方山县| 阿拉尔市| 涿鹿县| 武威市| 黔西县| 渝北区| 丹阳市| 本溪| 汤阴县| 三河市| 毕节市| 平遥县| 塔城市| 巨野县| 西丰县| 湘潭市| 广灵县| 民县| 都匀市| 丰原市| 北安市| 五莲县| 聂拉木县| 大兴区| 丰镇市| 闽清县| 中牟县| 清丰县| 定远县| 郑州市| 方山县| 尼木县| 雷波县|