> 
> Some tools are smart enough to detect it, but not all of them.
> 
> >At least, maven's conclusion is correct: It knows that there no tests to run
> >(or rather that it should not try to instantiate an abstract class) despite
> >the fact that there are methods marked with the "@Test" annotation.
> 
> Yes, but it find it after having failed to launch these tests. It
> does not check it beforehand.

How do you see that?
When I run "mvn test" here, the output does not show "BaseSecantSolverTest"
at all, and the build is successful. [Otherwise I wouldn't have committed
that class.]

> >
> >If it's possible, it is certainly more robust to rely on a Java keyword
> >("abstract") rather than on an external convention (a name ending with
> >"AbstractTest"). [Or, more precisely, even if the name does not end with
> >"AbstracTest", the information exists that can prevent generating an error.]
> 
> It would be a good thing, I didn't check if there was a feature
> request on the tools we use for this (ant, maven, surefire, gump,
> continuum, eclipse ...).
> 
> >The introduction of the "@Test" annotation is a progress, going in that
> >direction; that is, it is not mandatory anymore that the name of a test
> >method starts with "test". Similarly, it should not be mandatory that a
> >base class for tests ends with "AbstractTest".
> 
> I don't know all the annotations Junit uses. Perhaps there is
> something for the complete class.

I'll check whether instanitation could be disabled at that level; that would
indeed be the best option.

> >
> >>>Maven also relies
> >>>on the surefire plugin to run the tests, and surefire relies on Junit. So
> >>>there are a lot of intermediate steps between a build system (Gump,
> >>>Continuum, direct use of ant, direct use of Maven, Eclipse, Eclipse with
> >>>maven plugin ...) and the low level Junit runs. This may explain the
> >>>differences.
> >>
> >>Indeed.
> >>
> >>>I have already noticed that many tools do not have the same algorithm to
> >>>select classes to test. A recent example was the performance tests for
> >>>FastMath. Maven skip these tests because they do not end in "Test", but
> >>>Eclipse for example does not skip them because it directly look inside the
> >>>class and find the @Test annotations.
> >>
> >>[Yes, that Eclipse behaviour is a nuisance!]
> >>
> >>It *could* have been that the Ant build file and Maven Pom had
> >>different configs for the test file names.  However, I've just
> >>checked, and the files agree.
> >>
> >>The difference is due to the way that Surefire currently processes
> >>test-classes before handing them to JUnit.
> >
> >Do you mean that it's Surefire that handles the things correctly?
> >Then, could it be used also by Gump?
> 
> It does not handle it correctly, it still tries to launch the tests
> and when it fails, there is an error message.

Then I don't understand why it works locally, but not on the build server...
[No error message here.]

> >
> >>>There is clearly no ideal solution, but I think having different build
> >>>systems to suit several users needs is better. Having different tools help
> >>>finding different bugs.
> >>
> >>Indeed - in this case, the wrong naming convention for an abstract test 
> >>class.
> >
> >If it's impossible to properly configure Gump, I'll change the name...
> 
> I think this is the better short term solution.
> 

Probably, if there is no Junit annotation.


Regards,
Gilles

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to