eclema在java中显示red for else条件导致代码覆盖率降低

时间:2016-09-13 08:50:53

标签: java eclemma

在下面的示例代码中,eclema突出显示

  • var template = null; var req = new XMLHttpRequest(); req.open('GET', 'http://intranet/text.php', true); req.onreadystatechange = function (data) { if (req.readyState == 4) { if(req.status == 200){ template = data.responseText; var output = document.createElement('div'); output.innerHTML = template; output.querySelector('#username').innerHTML = 'get replaced'; console.log(output.innerHTML); } else{ dump("An error occured"); } } }; req.send(null); public class Test {为红色
  • System.out.println("false");为黄色

我的代码覆盖百分比是62%。 Eclemma报告:

if (a<15)

请有人解释一下,代码覆盖率仅为62%?

Missed Instructions Cov. 62% ,
Missed Branches Cov. 50% ,
Missed 2 , 
Cxty 3 ,
Missed 2 ,
Lines 7 ,
Missed 1,
Methods 2 ,
Missed 0 ,
Classes 1

1 个答案:

答案 0 :(得分:0)

EclEmma通常会尝试执行您的测试以计算代码覆盖率。 您的测试应涵盖在普通java类中编写的所有条件。

通常当您一起编写IF-ELSE时,EclEmma预计会编写2个测试来测试这两个条件,如果您的测试只测试IF或ELSE,那么它会标记IF-ELSE黄色表示它已经过部分测试!< / p>

在上面的例子中,你有一个= 10,它总是小于15,所以你的测试只测试IF部分。因此,您在else上获得了RED行,因为它根本没有经过测试。

您需要重构代码,以使测试涵盖IFELSE。那么只有你的代码覆盖率为100%。

您似乎只是在测试EclEmma的工作方式,否则您应该编写适当的Junit测试来测试代码的代码覆盖率。

您可以查看此网址以了解Junits:http://www.tutorialspoint.com/junit/