Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

running junits and cobertura with maven

Tags:

In our project, we run both junits and cobertura using maven. The problem I am facing is that,

  1. junit test cases are running twice, once before the jar creation process and then once again for generating cobertura coverage reports. When running cobertura and junits with ant, we run junits only once since, cobertura runs along with junits. Is there a way to configure the above case with maven. I know we can use "maven.test.skip" property to skip junits. But when I do this, I am not able to see junit xml & html file reports.
  2. Also, in maven how to configure junits to run in batch or parallel ?

thank you!

like image 651
Ajay Avatar asked Apr 09 '09 06:04

Ajay


People also ask

What does cobertura maven plugin do?

Simply put, Cobertura is a reporting tool that calculates test coverage for a codebase – the percentage of branches/lines accessed by unit tests in a Java project.

How do I run cobertura in eclipse?

After installing the plugin, restart the eclipse IDE. The Coverage View automatically appears. Or you can open the coverage view from Window > Show View > Other > Java > Coverage. Or you can just type "Coverage" in the Quick Access search box in the eclipse.

How do you use the cobertura code coverage tool?

1. Cobertura Code Coverage Report. Do nothing, just type the following Maven command to download and run the maven-cobertura-plugin automatically. Maven will generate the Cobertura code coverage report at ${project}/target/site/cobertura/index.


2 Answers

While I cannot find the exact page anymore, I recently read a discussion of why running the tests twice is considered a good idea. The key issues cited were around the effects of the Cobertura byte code alteration on the accuracy of your tests. In certain cases the timing of your code execution might be important, the byte code alteration can cause tests that fail in JUnit to pass when run only in Cobertura and vice versa. For this reason, it was recommended that the tests be allowed to execute twice. Most of the examples cited were around multi-threaded behaviors, but I imagine that there could be other cases were the byte code alteration can cause issues in your tests. Having the tests execute both ways provides you with baseline results and also reduces the chances of sending you on a wild goose chase if Cobertura is in fact altering test success.

like image 69
DavidValeri Avatar answered Oct 11 '22 10:10

DavidValeri


Try adding cobertura as a compile scope reference. And post the relevant parts of your pom.

like image 20
sal Avatar answered Oct 11 '22 11:10

sal