我们有一个庞大的Delphi项目(150万行代码),我们正在转向使用敏捷流程。
我们已经有了一个连续的集成环境(FinalBuilder),我已将其更新为包含单元测试(dUnit)和代码指标(CodeHealer)的电子邮件给我们开发团队中的每个人。我们的单元测试覆盖率并不高,所以我现在正试图将AQtime纳入混合,以便在每次构建时获得一些测试覆盖率结果。
我正在使用“执行程序”任务来运行单元测试可执行文件,记录结果并在之后解析文件。我打算使用“运行脚本”任务来运行AQtime(通过COM)并将结果导出到XML,以便我可以解析这些结果。
我遇到的问题是AQtime运行单元测试可执行文件,我失去了直接监视单元测试可执行文件的能力。我想让FinalBuilder解析两个任务的结果。当有人从AQtime调用时,有没有人知道如何访问dUnit结果?
答案 0 :(得分:7)
我们跑了同样的路径,我们没有从AQTime运行DUnit测试,
相反,我们使用FinalBuilder构建并运行我们的Dunit测试。
我们的单元测试使用XmlTestRunner,然后我们就可以知道了 测试失败或不太容易在生成的XML文件上使用XPath查询。
更新:最近对FinalBuilder 7.0的更新现在支持DUnit。它是通过自己的XMLTestrunner.pas,安装后在FinalBuilder目录下。 该跑步者以与NUnit相同的格式输出测试结果。然后它很好地集成到FinalBuilder服务器中。
答案 1 :(得分:2)
您正在描述我们正在慢慢发展的设置。
解决方案可能是让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;