讓編譯和測試過程自動化(2)

發表于:2012-01-16來源:未知作者:娃娃點擊數: 標簽:自動化測試
關于這個編譯代碼段,您應該注意的主要事情是 junitreport 中 report 元素的 styledir 屬性;它指定了用戶自定義的 XSLT 文件所在的目錄。為捕獲日期/時間戳


   關于這個編譯代碼段,您應該注意的主要事情是 <junitreport> 中 <report> 元素的 styledir 屬性;它指定了用戶自定義的 XSLT 文件所在的目錄。為捕獲日期/時間戳,您需要在 build.xml 某處的 <junit> 任務前引入 <tstamp> 任務。

回頁首

  讓電子郵件任務自動化

 Ant 有一個內建的 <mail> 任務,但不幸的是這個任務只有文本消息的性能,不能處理文件附件。 但最近,一項任務被提交到 Ant 開發組,它實現了 MIME 郵件的性能。

 我和另兩個積極的 Ant 開發者一起工作,改善這個最近提交的任務,這樣它就可以支持 Ant 的 FileSet 特性以及抄送和暗送的郵件功能。我還添加了另一個很好的特性 ― 將文件附加到電子郵件消息正文的能力。

 現代的電子郵件閱讀器可以像 MIME 那樣顯示附帶的 HTML 內容,還可以像瀏覽器那樣解讀 HTML 代碼。圖 1 顯示了使用 <mimemail> 任務、用 Ant 發送的 JUnit 報告電子郵件樣本是什么樣子。

 圖 1. 用 Ant 發送的 JUnit 報告樣本



  發送電子郵件的代碼如清單 3 所示。

 清單 3. build.xml 中用來發送電子郵件的代碼段

 

<target name="mail">
<taskdef name="mimemail"
classname="org.apache.tools.ant.taskdefs.optional.mail.MimeMail"/>
<tstamp/>
<mimemail messageMimeType="text/html"
messageFile="overview-summary.html"
tolist="erik@eblox.com"
mailhost="mail.eblox.com"
subject="JUnit Test Results: ${TODAY}"
from="erik@hatcher.net">
<fileset dir=".">
<include name="TESTS-*.xml"/>
</fileset>
</mimemail>
</target>

 代碼注釋:

 <taskdef> 用來定義 <mimemail> 任務,因為現在 Ant 沒有提供這個功能。以后,這個任務可能會成為 Ant 的可選任務之一;那么 <taskdef> 就會成為多余。
<tstamp> 用來創建用在電子郵件主題中的 TODAY 屬性。在 build.xml 的“準備”或“初始化”階段包含 <tstamp> 任務很常見,所以根據您的情況,它可能是多余的。

 <mimemail> 具有清楚的自解釋的語法。提供的代碼中包含了這項任務的 Ant 風格的幫助文件(請參閱 參考資料)。不僅 HTML 報告被發送(使用 messageFile 屬性以便附加到消息的正文部分),而且原始的 XML 結果文件也作為標準 MIME 附件用 <fileset> 被發送了。

 <junitreport> 在前面創建了一個名叫 overview-summary.html 的文件(因為指定了“noframes” 選項)。

回頁首

   排障、測試和部署

 我為 Ant 開發團體提供了剛才討論的所有的代碼修正,他們已經認可將其包含到以后的發行版中去。但是,因為官方的 Ant 發行版還沒有包含這篇文章中使用的技巧,在讓這些技巧為您服務之前還需要采取一些措施。

 讓代碼生效

 第一,這些代碼的修正是基于 Ant 1.3 發行版的;這是我將推薦的用于這代碼的唯一 Ant 版本。 提供的代碼包含了 JUnitMail.jar 和用于生成 jar 文件的源代碼。這個 jar 文件必須存在于啟動 Ant 環境中的 classpath 里 ― 在 Ant 的 optional.jar 之前。

 如果您是個典型的 Ant 用戶,您通過 $ANT_HOME/bin 中的包裝腳本之一運行 Ant。這些包裝腳本在啟動 Ant 前將所有 $ANT_HOME/lib 中的 jar 文件放入 classpath。在 Windows 平臺下只要將 JUnitMail.jar 放入 $ANT_HOME/lib 目錄,用 ant.bat 就可以處理 classpath 問題。

 如果遇到過古怪的行為(例如,也許從 <junit> 捕獲的額外參數沒有在 XML 文件中出現),那么就調試在包裝腳本中用到的 classpath(例如,ant.bat 中的 %LOCALCLASSPATH% )并修改包裝腳本,確保 classpath 中 JUnitMail.jar 在 optional.jar 之前。

 測試代碼

 在將這新的代碼集成到 classpath 中以后,用 XML 格式化器測試一個簡單的 JUnit 測試示例(如 清單 2所示)確保捕獲了額外的 Ant 屬性。

 額外屬性作為 <Property> 元素在 XML 格式化器中被捕獲。如果,由于某種原因致使屬性元素沒有出現,就可能是一個 classpath 的問題。

 確保修正后的 JUnit 任務正在被使用,一個保險的辦法是使用我的 JUnitMail.jar 版本中提供的 JUnitTask.class 、 JUnitTest.class 、 JUnitTestRunner.class 和 XMLJUnitResultFormatter.class 來代替 optional.jar 中相應的文件。

 <mimemail> 任務有兩個依賴條件 ― JavaMail 和 Java 活動框架(請參閱 參考資料)。在啟動 Ant 時,這兩個 jar 文件必須放在 classpath 中,以便使用 <mimemail>。

 定制布局

 您可以通過調整 XSLT 文件定制 JUnit 結果的 HTML 布局。我通過為每個測試套件在隱藏的 <DIV> 中添加額外屬性以及添加一些用于隱藏及顯示該額外信息的 JavaScript 的方法修改了 Ant 的標準布局。這些 JavaScript 技巧可以在 Internet Explorer 中生效,但在 Netscape 中不起作用(它顯示了所有的屬性,沒有隱藏)。

 我添加新捕獲屬性的首要目的僅僅是讓那些信息可用,不過將這些屬性結合到 HTML 報告中的方法,還有很大的改進余地。(請記住,如果您做了任何改進,請將之提交到 Ant 開發者和用戶團體,讓我們大家分享?。?br />
 回頁首

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97