我们有一个大型 Delphi 项目(150 万行代码),并且我们正在转向使用敏捷流程。

我们已经有了一个持续集成环境 (FinalBuilder),我已将其更新为在发给我们开发团队中每个人的电子邮件中包含单元测试 (dUnit) 和代码指标 (CodeHealer)。我们的单元测试覆盖率不是很好,所以我现在尝试将 AQtime 纳入其中,以获得每个构建的一些测试覆盖率结果。

我使用“执行程序”任务来运行单元测试可执行文件,记录结果并随后解析文件。我打算使用“运行脚本”任务来运行 AQtime(通过 COM)并将结果导出到 XML,以便我可以解析这些结果。

我遇到的问题是 AQtime 运行单元测试可执行文件,我失去了直接监视单元测试可执行文件的能力。我想让 FinalBuilder 解析这两个任务的结果。有谁知道当从 AQtime 调用 dUnit 结果时如何访问它?

有帮助吗?

解决方案

我们顺着这个相同的路径,我们不逃避AQTime DUNIT测试,

相反,我们建立和使用的FinalBuilder运行我们的测试DUNIT。

我们的单元测试使用XmlTestRunner,那么我们就可以知道,如果 测试失败或不是非常容易地在生成的XML文件使用XPath查询。

<强>更新一种最近更新的FinalBuilder 7.0现在支持DUNIT。这是通过自身XMLTestrunner.pas,这是后安装下的FinalBuilder目录。 此转轮输出相同的格式作为NUnit的测试结果。然后,它集成得很好到的FinalBuilder服务器。

其他提示

您正在描述我们正在慢慢发展的设置。

  • DUnit 测试使用以下命令编译为控制台应用程序 TText测试监听器 在 TextTestRunner 单元中定义。
  • CI 服务器是一个 cmd 脚本,用于构建所有项目并执行所有测试。
  • 测试的输出通过管道传送到文件。

一个办法 可能是让 AQTime 配置这些控制台应用程序,同时仍然能够将结果通过管道传输到随后可以解析的文件?!

另一种解决方案 可能是实现您自己的 TestListener 对象,并让该对象将测试结果写入事件日志、直接写入日志文件、数据库或任何您喜欢的地方,并由 FinalBuilder 拾取。

而不是在您的项目文件中包含类似的内容

  Application.Initialize;
  if System.IsConsole then TextTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;

它会变成这样

  Application.Initialize;
  if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top