On Nov 20, 2007 4:24 AM, Dan Fabulich <[EMAIL PROTECTED]> wrote: > > I'm busily wiring up the tests found in maven-surefire-plugin/src/it into > the new IT module I set up earlier. One of these, "test7", tests a > project that has a JUnit test and a TestNG test in the same project. > > The Surefire documentation says that if you put both TestNG and JUnit on > your classpath, TestNG is used to run all of the tests: > > http://maven.apache.org/plugins/maven-surefire-plugin/usage.html > > "[...] (including if you are using TestNG to execute your JUnit tests, > which occurs by default if both are present in Surefire)." > > Currently test7 is failing, because the JUnit test isn't getting run; only > the TestNG test is running. > > I think that makes sense: Surefire is just presenting both classes to > TestNG as classes to run, but we don't explictly set junit=true in TestNG, > so the JUnit test appears to have no tests in it (it has no @Test > annotations). > > Unfortunately, if you DO set junit=true in TestNG, you only get the JUnit > test to run! The only way to get TestNG to run both JUnit and non-JUnit > tests is to separate them out in advance, passing in a list of JUnit tests > marked with junit=true, and a separate list of TestNG tests. > > I think that whoever wrote that bit of documentation assumed (incorrectly) > that TestNG had already written code that could automatically determine > the difference between TestNG tests and JUnit tests and "do the right > thing" with each. (There are definitely some unclear cases; what about a > JUnit test with some TestNG annotations that would contradict the default > JUnit semantics? This isn't even terribly unlikely, especially if you're > trying to gradually convert your tests over to TestNG.) > > As I see it, here are the options: > > 1) Don't support mixing JUnit tests with TestNG tests in a single Surefire > execution. Clever users can, if they absolutely must, try to configure > two executions of Surefire, one of which has junit=true, the other of > which doesn't. The advantage of this is that this is what the code > already does. > > 2) Try to write the code to separate out the tests ourselves in Surefire. > (This is high magic... I don't think I want to do this.) > > Frankly, I don't like either of the options, but if I had to pick, I'd > pick #1. > > More generally, I think we're stuck in a difficult spot because of the > design assumptions of Surefire. (I'll write up a separate post on what I > think about that.) > > -Dan >
Don't remember the specific code, but do you have access to the class or is it just a string? Because if we have a class then we can test for its JUnit inheritance to determine if it is or not JUnit. Otherwise, I think I would go with 1. ./alex -- .w( the_mindstorm )p. TestNG co-founder EclipseTestNG Creator