技术开发 频道

让编译和测试过程自动化

  发送电子邮件的代码如清单 3 所示。

  清单 3. build.xml 中用来发送电子邮件的代码段
 
  代码注释:

    用来定义 任务,因为现在 Ant 没有提供这个功能。以后,这个任务可能会成为 Ant 的可选任务之一;那么 就会成为多余。
    用来创建用在电子邮件主题中的 TODAY 属性。在 build.xml 的“准备”或“初始化”阶段包含 任务很常见,所以根据您的情况,它可能是多余的。

    具有清楚的自解释的语法。提供的代码中包含了这项任务的 Ant 风格的帮助文件(请参阅参考资料 )。不仅 HTML 报告被发送(使用 messageFile 属性以便附加到消息的正文部分),而且原始的 XML 结果文件也作为标准 MIME 附件用 被发送了。

    在前面创建了一个名叫 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 问题。

  如果遇到过古怪的行为(例如,也许从 捕获的额外参数没有在 XML 文件中出现),那么就调试在包装脚本中用到的 classpath(例如,ant.bat 中的 %LOCALCLASSPATH% )并修改包装脚本,确保 classpath 中 JUnitMail.jar 在 optional.jar 之前。

  测试代码
  在将这新的代码集成到 classpath 中以后,用 XML 格式化器测试一个简单的 JUnit 测试示例(如清单 2 所示)确保捕获了额外的 Ant 属性。

  额外属性作为 元素在 XML 格式化器中被捕获。如果,由于某种原因致使属性元素没有出现,就可能是一个 classpath 的问题。

  确保修正后的 JUnit 任务正在被使用,一个保险的办法是使用我的 JUnitMail.jar 版本中提供的 JUnitTask.class 、 JUnitTest.class 、 JUnitTestRunner.class 和 XMLJUnitResultFormatter.class 来代替 optional.jar 中相应的文件。

   任务有两个依赖条件 ― JavaMail 和 Java 活动框架(请参阅参考资料)。在启动 Ant 时,这两个 jar 文件必须放在 classpath 中,以便使用 。

  定制布局
  您可以通过调整 XSLT 文件定制 JUnit 结果的 HTML 布局。我通过为每个测试套件在隐藏的

    中添加额外属性以及添加一些用于隐藏及显示该额外信息的 JavaScript 的方法修改了 Ant 的标准布局。这些 JavaScript 技巧可以在 Internet Explorer 中生效,但在 Netscape 中不起作用(它显示了所有的属性,没有隐藏)。

  我添加新捕获属性的首要目的仅仅是让那些信息可用,不过将这些属性结合到 HTML 报告中的方法,还有很大的改进余地。(请记住,如果您做了任何改进,请将之提交到 Ant 开发者和用户团体,让我们大家分享!)

  让 XP 成真
  一旦您使用了我的补丁,让编译和测试过程自动进行只是个在 cron 作业(或者是 Windows 平台上的 at 作业)中包装 Ant 执行的问题。

  理想化的想法是,自动进行的过程将会把代码从您的源代码管理系统中提取出来,完成编译、执行单元测试、然后每晚用电子邮件发送结果。还有将整个编译日志捕获并用电子邮件发送或张贴到 intranet 站点,这样您就与“持续集成”和 XP 梦想接近了一步。

0
相关文章