Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Per-test coverage does not work if the test loads the classes into multiple class loader

Binod Gupta May 5, 2013

Hi,

We have a unit test that loads classes into another classloader. although we have the coverage data for those classes. Clover is unable to link the per-test coverage data to the unit test. Can you please help.

Regards,

Binod

5 answers

0 votes
Marek Parfianowicz
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
May 7, 2013

It might be a problem that per-test coverage files written by Clover's coverage recorders from two different class loaders have the same file name and they're being overwritten, resulting in loss of coverage data. This might explain why you see incorrect per-test coverage in the report. I'll be happy to investigate it further - could you raise a support ticket at http://support.atlassian.com (in the 'Clover Support' project) and attach some code samples and build logs?

0 votes
Binod Gupta May 6, 2013

I am getting the coverage in the overall report but the per-test code coverage information that is generated is not correct. I want that per-test coverage report to point me to classes that were covered in the other classloader.

0 votes
Marek Parfianowicz
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
May 6, 2013

It might be a problem with availability of Clover runtime classes in your custom class loader. If classes are not found, then coverage will not be recorded. Does your class loader have the clover.jar on classpath? Do you have any exceptions in the log like NoClassDefFoundError? Have you tried to run your application with -Dclover.logging.level=debug to get more information?

0 votes
Binod Gupta May 5, 2013

Hi Marek,

Thanks for the quick reply. We use clover-for-ant and the clover version is 3.1. We are running the unit test in one jvm only and do not spawn a new process, but we do use multiple classloaderd within the same jvm to load the same classes in multiple class loader so that we can simulate 2 similar env in the same jvm.

It does not spawn a new process therefore I am not sure how to use the distributed coverage features.

0 votes
Marek Parfianowicz
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
May 5, 2013

Hi Binod, could you give more details how your project and tests are organized? Which Clover version do you use? Do you use Clover-for-Ant or Clover-for-Maven (or other)? How your unit test works exactly - does it spawn another process? Have you tried to use the Clover's "distributed coverage" feature?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events