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