It is a limitation by design: JaCoCo adds probes very sparingly to limit
the runtime overhead. That's why it is the fastest coverage tool which
scales also for *very* large code bases.
In case you're interested here are more detailed information about the
probe insertion strategies of JaCoCo:
http://www.eclemma.org/jacoco/trunk/doc/flow.html
Regards,
-marc
On 29.04.15 21:42, [email protected] wrote:
Am Mittwoch, 29. April 2015 20:24:18 UTC+2 schrieb Marc R. Hoffmann:
Hi,
I don't know, what the SystemExitHandler in line 42 actually does,
but if it does a System.exit() and the method never returns the
whole block is not marked as covered. This is a documented
limitation, see our FAQ:
http://www.eclemma.org/jacoco/trunk/doc/faq.html
Code with exceptions shows no coverage. Why?
JaCoCo determines code execution with so called probes.
Probes are inserted into the control flow at certain
positions. Code is considered as executed when a subsequent
probe has been executed. In case of exceptions such a sequence
of instructions is aborted somewhere in the middle and not
marked as executed.
Regards,
-marc
On 27.04.15 21:21, [email protected] wrote:
Hello everyone,
I have an issue with JaCoCo that I don't understand. It might be a bug or just
me being stupid so I thought I ask before opening an issue.
I created a project on GitHub [1] and integrated it with coveralls.io using the JaCoCo
Maven plugin to generate the coverage report. The issue surfaces in the run method of the
Main class on line 48 [2]: all branches of the if statement are covered in tests and yet
JaCoCo reports the body of the if statement as uncovered. It is not an issue with
coveralls.io because the exact same coverage is shown in the JaCoCo HTML report if I
build the project on my machine. The HTML report even states on line 48 that "all 4
branches [are] covered".
Am I doing something wrong?
[1] https://github.com/hzpz/access-export
[2]
https://coveralls.io/builds/2422271/source?filename=src%2Fmain%2Fjava%2Fnet%2Fkockert%2Faccess%2Fexport%2FMain.java#L48
Hi Marc,
thanks for your reply!
I know about this limitation and that is one reason the SystemExitHandler
interface exists ;-) The implementation I use in tests does not call
System.exit() but throws an exception instead. This way I am able to use
JUnit's @Test annotation with an 'expected' in my tests.
By the way, both Cobertura as well as the coverage runner integrated in
IntelliJ IDEA 14.1 report the coverage that I am expecting. I am more and more
convinced that this is a bug in JaCoCo. Or is it just another limitation?
Any thoughts?
Timo
--
You received this message because you are subscribed to the Google Groups "JaCoCo
and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jacoco/554135F6.1050200%40mountainminds.com.
For more options, visit https://groups.google.com/d/optout.