得到代码覆盖率大致需要三步:
1. 注入(instrumentation)
2.运行Tests,得到Coverage data
3.生成报表
所以注入这一步是得到代码覆盖率的基础。注入的目的是给被测试的代码加一些额外的代码用于在测试运行Test时统计及保存那些语句被Test执行了。反编译了一个Cobertura注入的方法就能够大致了解注入是怎么一回事了:
原方法:
public HashMap<String, String> handleRequest() {
HashMap<String, String> model = new HashMap<String, String>();
String helloRaptor = "Say hello to Raptor!" ;
model.put("greeting", helloRaptor);
return model;
}
注入后的方法:
public HashMap<String, String> handleRequest()
{
__cobertura_counters[2] += 1; HashMap model = new HashMap();
__cobertura_counters[3] += 1; String helloRaptor