Should have cc:ed surefire-dev also.

Here's the coverage report.

http://docs.codehaus.org/download/attachments/35422245/surefire-clover-2007-12-10.zip

-Dan

---------- Forwarded message ----------
Date: Mon, 10 Dec 2007 00:02:50 -0800 (Pacific Standard Time)
From: Dan Fabulich <[EMAIL PROTECTED]>
To: Maven Developers List <[EMAIL PROTECTED]>
Subject: Re: Measuring integration test code coverage for a Maven plugin

Raphaël Piéroni wrote:

My guess is that you should deploy your instrumented plugin in a test repository.

That's basically what I wound up doing.

For the record, I started by specifying a special local repository in my setting directory.

Then I tried just using maven-clover-plugin 3.6, calling instrumentInternal directly (which you're not supposed to do because you risk getting cloverized stuff in your production output, though that's exactly what I wanted to do in my case).

That didn't quite work because instrumentInternal includes a function redirectArtifact() that changes the output jar to be blah-clover.jar; once I commented that out and added clover as a dependency to all of my code, I was able to run my integration tests and get a total view of my integration test coverage.

For the record, Surefire's unit tests covered 45% of Surefire; with the added integration tests we've covered 79.4% (87 classes, 3,323 / 4,187 elements). It also highlighted some key areas where we could add more tests, which was exactly what I wanted.

-Dan

2007/12/7, Dan Fabulich <[EMAIL PROTECTED]>:

I recently added a bunch of integration tests for Surefire.  These
integration tests automatically fork a separate Maven process to run real
Maven builds, like the Maven core integration tests do.

This naturally led me to wonder: Does Surefire (now) have reasonable code
coverage?  Specifically, which lines in Surefire were covered by unit
tests, which by integration tests, and which weren't covered at all?

I know there's a variety of handy code coverage tools that work with
Maven, allowing you to instrument classes for code coverage and run your
unit tests against the instrumented classes.

The catch in this case is that I need to somehow convince Maven to use the
instrumented version of my plugin, and not the regular "real" version of
the plugin, when I go to run my integration tests.  The clover plugin, for
example, doesn't seem to want to let me do that.

[On the other hand, maybe I should just use an instrumenting JVM
instead...?  Java 1.5's new java.lang.instrument would probably do the
trick, but I'm not aware of any code coverage tool that works with
j.l.instrument, and anyway I'd have to fix SUREFIRE-179 just to get it to
work... :-)]

Has anybody ever done this before?  More generally, I don't think I've
ever seen an example of anyone using Maven to run multi-process
integration tests (e.g. cargo tests) and also measuring code coverage on
those integration tests.  Has anyone seen a good example of this that I
could reuse?

-Dan

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to