Cobertura 仪器实际上做了什么?

What does Cobertura instrumenting actually do?

有人可以详细解释 Cobertura 检测实际上用字节码做什么吗?

它向每一行代码添加一个回调,告诉框架该行已到达。例如:

void foo() {
  System.out.println("foo");
}

变成

void foo() {
  Coberura.reached(<method foo, line 1>);
  System.out.println("foo");
}

这样,在 运行 单元测试之后,Cobertura 可以判断到达了哪些行。