I used mvn cobertura:cobertura to generate this cobertura JUnit test coverage report. Can anyone explain to me what do the numbers beside the line number mean? Thank you.
Those numbers correspond to how many times that line was executed during your tests. Using a simple example:
public class MyClass {
public void methodA(){
System.out.println("Method a");
}
public void methodB(){
System.out.println("Method b");
}
}
With some tests:
public class MyClassTest {
@Test
public void testMethodA(){
final MyClass x = new MyClass();
x.methodA();
}
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB();
}
}
I will get the following report, showing that I constructed my test object twice, and ran each method once:
If I add an @Ignore
annotation on testMethodB
, the following report is produced instead, showing that I only constructed my class once, and did not execute lines within methodB
when testing:
The color is associated with coverage. It will appear red when there is no test that covers that line or branch.
Edit - Regarding your question in the comments, its possible to be missing coverage due to not checking all conditions. For example, consider this method:
public void methodB(final boolean testOne, final boolean testTwo){
if(testOne || testTwo){
System.out.println("Method b");
}
System.out.println("Done");
}
and this test:
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB(true, false);
x.methodB(true, true);
}
you will end up with the following test report. The reason for this is because although you did execute this line in the test(2 times, in fact), I did not test all permutations of my conditional, therefore, the report will show that I am missing coverage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With