亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
用Jython構建JUnit測試包
作者:網絡轉載 發布時間:[ 2013/1/7 15:07:01 ] 推薦標簽:

  開發人員有多種理由決定自動化單元測試。許多人甚至進一步發揮它,自動化這些測試的定位和執行。但是如果想要測試裝具模塊(test harness)像靜態定義的那樣運行呢?請跟隨開發員 Michael Nadel,看看如何利用 Python 模擬靜態定義的 JUnit TestSuite 類。
  JUnit 測試框架被越來越多的開發小組所共同使用。歸功于各種各樣的測試裝具模塊,現在可以測試構成任何 Java 應用程序的幾乎每一個組件。事實上,幾乎整個二級市場似乎都是用圍繞 Junit 建立的。包括 Cactus、jfcUnit、XMLUnit、DbUnit 和 HttpUnit 這樣的裝具模塊都可以免費供開發人員用于測試應用程序。隨著系統的復雜程度的增加,并且有這么多工具可供使用,沒有什么理由不依靠單元測試。
  
  不過,開發人員不僅僅是程序員。我們與用戶交互以修復 bug 并確定需求。我們參加會議并進行電話推銷。我們完成一些(有時全部)質量保證功能。既然有這么多責任,希望盡可能自動化是自然而然的了。因為好的團隊(除了其他事情外)會進行大量測試,希望自動化不同的開發過程的人常常會對這一領域進行詳細研究。
  
  自動化單元測試
  有許多種自動化所有項目測試用例的定位和執行的方法。一種解決方案是聯合使用 Ant 的 junit 任務與嵌入的 fileset 任務。這樣可以包括和排除特定目錄中的文件(基于文件名樣式)。另一種選擇是使用 Eclipse 的一個功能,它可以指定所有測試所在的和執行的目錄。前一種選擇提供了對運行的測試進行過濾的靈活性(并且由于它是一個純粹的無頭(headless)Java 應用程序,可以運行在幾乎所有地方),后一種選擇可以調試“動態”包。是否可以結合這兩種方式的強大和靈活性?
  
  有了 Python 編程語言的 Java 平臺實現 ―― Jython,回答是響亮的“可以!”(如果不熟悉 Jython,應當在繼續本文之前補充這方面知識,更多信息請參閱后面的 參考資料 )。利用 Jython 的強大和優雅,可以維護一個定位文件系統、搜索匹配某種樣式的類和動態編譯 JUnit TestSuite 類的腳本。這個 TestSuite 類像所有其他靜態定義的類一樣,可以用喜愛的調試程序容易地調試。(在本文中使用的例子假定使用的是 Eclipse IDE,不過,我在這里描述的技術不用做很多修改可以用于大多數其他 IDE。)
  
  在進行任何設計決定時,必須對所做的選擇和決定的影響進行權衡。在這里,為了得到調試動態生成的測試包的能力,必須增加額外的復雜性。不過,這種復雜性被 Jython 自身所減輕了:Jython 經過很好測試并得到很好的支持,并且是開放源代碼的。而且,Python 越來越成為面向對象的、平臺獨立的編程的事實上的標準。出于這兩種原因,采用 Jython 的風險很少,特別是它提供了這樣的好處:在創建和調試動態生成的 JUnit TestSuite 類方面具有無可匹敵的靈活性。
  
  如果是否采用 Jython 是主要的考慮,那么即使不使用它也可以在解決原來的問題方面有所進展。不使用 Jython 的話,可以用一個 Java Property 文件存儲一組類、目錄和包,以在包中加入或者排除測試。不過,如果選擇使用 Jython,可以利用整個 Python 語言和運行時來解決選擇執行哪些測試的問題。Python 腳本比 Java Property 文件靈活得多,它只受限于您的想像力。
  
  利用 Jython 與 Java 平臺的無縫集成可以創建靜態定義的、然而是動態構建的 TestSuite 類。有大量關于 JUnit 的教程,不過還是看下面這兩行代碼作為復習。清單 1 是靜態構建 TestSuite 類的一個例子(這個例子取自 JUnit: A Cook's Tour,有關它和其他 JUnit 資源的鏈接請參閱 參考資料):
  
  清單 1.靜態定義 TestSuite
  public static Test suite() {
  return new TestSuite( MoneyTest.class );
  }
  
  清單 1 表明 TestSuite 是由 Test 類的類實例組成的。這個裝具模塊完全利用了這一點。為了分析這個工具的代碼,應從 參考資料 中下載本文的示例 JAR 文件。這個文檔包含兩個文件:DynamicTestSuite.java 和 getalltests.py,前者是一個用 Phthon 腳本動態生成 TestSuite 的 JUnit 測試裝具模塊,后者是一個搜索匹配特定樣式的文件的 Python 腳本。DynamicTestSuite.java 使用 getalltests.py 構建 TestSuite。可以修改 getalltests.py 以更好地適合自己的項目的需要。
  
  了解測試裝具模塊
  代碼是如何工作的?首先,指派 getalltests.py 獲取一組要執行的 Test 類。然后,使用 Jython API 將這個列表從 Python 運行時環境中提取出來。然后使用 Java Reflection API 構建在表示 Test 類名的列表中的 String 對象的類實例。后,用 JUnit API 將 Test 添加到 TestSuite 中。這四個庫的相互配合可以實現您的目標:動態構建的 TestSuite 可以像靜態定義的那樣運行。
  
  看一下清單 2 中的 JUnit suite 清單。它是一個公開 public static TestSuite suite() 方法簽名的 TestCase。由 JUnit 框架調用的 suite() 方法調用 getTestSuite(), getTestSuite() 又調用 getClassNamesViaJython() 以獲取一組 String 對象,其中每一個對象表示一個作為包的一部分的 TestCase 類。
  
  清單 2. 動態定義 TestSuite
  
  /**
  * @return TestSuite A test suite containing all our tests (as found by Python script)
  */
  private TestSuite getTestSuite() {
  TestSuite suite = new TestSuite();
  
  // get Iterator to class names we're going to add to our Suite
  Iterator testClassNames = getClassNamesViaJython().iterator();
  
  while( testClassNames.hasNext() ) {
  String classname = testClassNames.next().toString();
  
  try {
  // construct a Class object given the test case class name
  Class testClass = Class.forName( classname );
  
  // add to our suite
  suite.addTestSuite( testClass );
  
  System.out.println( "Added: " + classname );
  }
  catch( ClassNotFoundException e ) {
  StringBuffer warning = new StringBuffer();
  warning.append( "Warning: Class '" ).append( classname ).append( "' not found." );
  System.out.println( warning.toString() );
  }
  }
  
  return suite;
  }

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 免费的成人a视频在线观看 免费的a级毛片 | 波多野结衣在线视频观看 | 特大一级aaaaa毛片 | 免费一级a毛片在线 | 欧美一区二区三区在线 | 欧美日韩国产一区二区 | 欧美成人黄色片 | 亚洲一区免费在线 | 欧美2区 | 色综合天天综合高清网国产 | 91在线免费视频观看 | 午夜高清免费在线观看 | 美女很黄很黄 | 日韩在线网址 | 日韩免费一区二区三区 | 精品亚洲性xxx久久久 | 窝窝影院午夜看片 | freexx性欧美黑人 | 日本国内一区二区三区 | 亚洲黄色激情视频 | 亚洲七七久久精品中文国产 | 亚洲色欲色欲综合网站 | 暴力调教抖s浪荡总裁受文 白洁性荡生活l六 | 欧美视频在线免费播放 | 久久青草免费免费91线频观看 | 亚洲欧美另类在线 | 成人在免费视频手机观看网站 | 国产一区二区视频在线 | 嗯灬啊灬用力再用力ca视频 | 日韩美女性行为免费视频 | 黄图视频在线观看 | 日韩免费在线观看 | 免费国产午夜在线观看 | 黄色影视 | 国产欧美亚洲另类第一页 | 亚洲欧美激情精品一区二区 | 色老头一级毛片 | 怡红院视频在线 | 免费看国产精品久久久久 | 99视频九九精品视频在线观看 | 欧美羞羞视频 |