On Sun, Nov 12, 2006 at 11:08:21PM +1100, J. Matthew Pryor spake thus:
*snip*
> I am porting from maven 1 to maven 2, and we had begun using junit 4.1
> by using the JUnit4TestAdapter like so:
*snip*
> This worked fine for maven 1 and since I didn't know any better, was
> ported over to maven 2, where it *MOSTLY* works.
>
> I say mostly, because there are 2 out of about 80 classes don't get any
> tests detected in them i.e.
*snip*
> From reading around, it looks like I am between a rock & a hard place
> because http://jira.codehaus.org/browse/MSUREFIRE-131 would imply the
> approach above shouldn't work (well it doesn't seem to all the time) but
> http://jira.codehaus.org/browse/MSUREFIRE-84 would imply that native
> junit 4 support is not baked properly either.
>
> I'd rather not go to a temporary solution like
> http://www.unto.net/wiki/Maven_JUnit4_plugin if I don't have to.
>
> Any insights, work-arounds of corrections would be greatly appreciated
We've had good results using a slightly modified version of the patches
attached to SUREFIRE-31 by Karl M. Davis:
http://jira.codehaus.org/browse/SUREFIRE-31#action_76833
We basically made an internal version of the surefire plugin (based on a
patched version of the svn code from 2006-10-11) for projects that use
JUnit-4.x.
As for your 2 out of 80 classes not having their JUnit-4.x tests
detected, this may be due to the behavior of the default surefire
plugin: it attempts to run as tests anything that looks like a junit-3.x
test, a TestNG test, or a non-framework-related unit test (methods named
test*()). It may be that your unit tests are not being run by the
provider you think they are. A simple way to test this would be to add
(to one of your classes where no unit tests are detected) methods that
print something recognizable to stderr:
* a JUnit-4.x style @Before method
* a JUnit-4.x style @Test annotated method named doFoo() [that is,
/not/ named testFoo()]
* a method named testJunk()
I suspect that you'll see the output from testJunk() only. More to the
point, using a patched version of the surefire plugin is the only
solution I've seen that supports JUnit-4.x completely. In this case,
"completely" means "completely for my purposes" as I've not tested every
JUnit-4.x feature using our patched version, but I have tested these
behaviors:
* Exceptions in @BeforeClass, @Before, @AfterClass, and @After
methods are detected and reported (they fail the tests)
* Methods annotated with @Test, and /only/ those methods, are
treated as unit test methods (regardless of the method name)
HTH,
-Al
--
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
::
Alan D. Salewski
Software Developer
Health Market Science, Inc.
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
::
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]