How is this done? Are the tests actually executed with some fancy execution context (similar to JRebel e.g.) for this? Or is it more like static analysis?
在Clover的代码检测期间,它检测哪些方法是测试方法(默认情况下它识别JUnit3 / 4和TestNG).这些方法获得额外的仪器指令.简而言之,进入测试方法通常会实例化专用覆盖记录器,该记录器专门测量该测试的覆盖范围.有关Clover中每种测试记录策略的更多信息:
After a “clover-run”, some DB is saved to disk, and based on this, reports are generated right?
Clover数据库(clover.db)包含有关代码结构(包,文件,类,方法,语句,分支)的信息,还包含有关测试方法的信息.还有单独的覆盖记录文件(在运行时产生),其包含关于给定代码元素的“命中”数量的信息. Clover支持全局覆盖(即整个运行)以及每个测试覆盖(即来自单个测试的覆盖).
更多信息在这里:
Is the DB-Format accessible?
有关数据库模型和代码示例的更多详细信息.
但问题是:你真的需要手动读取这个数据库吗?你写道:
Can I see the mapping between test and implementation there ?
这样的映射已经由Clover提供 – 例如,在HTML报告中,如果单击源行,它将弹出一个测试方法列表.
PS:我是Atlassian的Clover开发人员,如果您有任何疑问,请随时与我联系.