如果我在emma中检测两个jar,将它们指向相同的emma会话文件,然后同时运行它们(例如,客户端和服务器),我应该期望工作还是失败?这些罐子是建立在共同来源之外的,所以我不希望元数据出现问题。
我在文档中没有看到任何关于此内容的信息,所以如果它存在指针肯定会受到欢迎。
答案 0 :(得分:1)
不,不能。当流程大部分结束时,Emma会写出检测结果。它会覆盖现有位置的任何文件,但它也会写出一个文本文件,并且不会直接支持合并,也不会合并多个报告。
然而,有一个分析工具可以帮助您执行此操作,称为Grobo。它具有一个分析模式“safe”,它将每个事件写入日志文件,然后关闭该日志文件。这可能允许多个实例运行并输出到同一位置,并在不关闭进程的情况下为您提供最新的分析信息。旧版本用于允许合并覆盖率报告,但最新版本没有提及它。我过去曾经使用它,Tomcat在写完之前杀死了Emma的分析线程,在这种情况下,安全模式可以确保所有覆盖数据都没有问题。它还可以用于通过一组测试获得覆盖率,这些测试集成测试有时非常有用。
另一种选择,可能是最好的选择,是Cobertura。它能够合并多个报告文件,因此您可以使用不同的输出文件运行每个Java进程,然后在最后将它们全部合并以生成组合覆盖率的报告。