开发者

Maven doesn't run TestNG tests generated by groovy compiler

I have a java project with tests written in groovy.

I use TestNG as unit testing framework.

I also have several tests written in java.

After maven test-compile phase all tests (both groovy and java) are compiled and placed in the similar folder inside target/test-classes/.

When I want to run tests with maven, only java tests are run.

When I tried to run groovy test from the IDE (IntelliJ IDEA), it runs perfectly.

I decompiled groovy test and here is what I have:

package mypackage.core;

import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;
import org.testng.annotations.Test;

@Test
public cla开发者_StackOverflow中文版ss Sample
  implements GroovyObject
{
  public Sample()
  {
    Sample this;
    CallSite[] arrayOfCallSite = $getCallSiteArray();
    this.metaClass = $getStaticMetaClass();
    MetaClass tmp20_17 = this.metaClass;
    this.metaClass = ((MetaClass)ScriptBytecodeAdapter.castToType(tmp20_17, $get$$class$groovy$lang$MetaClass()));
    tmp20_17;
    while (true)
      return;
  }

  @Test
  public void testSomething()
  {
    CallSite[] arrayOfCallSite = $getCallSiteArray(); Registry registry = arrayOfCallSite[0].callConstructor($get$$class$mypackage$core$internal$Registry());
    arrayOfCallSite[1].call(registry, null); for (return; ; return);
  }

  static
  {
     tmp10_7 = new Long(0L);
    __timeStamp__239_neverHappen1314379332415 = (Long)tmp10_7;
    tmp10_7;
     tmp28_25 = new Long(1314379332415L);
    __timeStamp = (Long)tmp28_25;
    tmp28_25;
    Class tmp48_45 = ((Class)ScriptBytecodeAdapter.castToType($get$$class$mypackage$core$Sample(), $get$$class$java$lang$Class()));
    $ownClass = (Class)tmp48_45;
    tmp48_45;
    return;
    while (true)
      return;
  }
}

Has anyone met similar issue? What can be wrong here? Can it be connected with the fact that class Sample implements GroovyObject? Can it be connected with bad surefire version?

Thanks!

UPD:

Groovy-related settings in pom.xml:

<dependency>
   <groupId>org.codehaus.groovy.maven.runtime</groupId>
   <artifactId>gmaven-runtime-1.6</artifactId>
   <version>1.0</version>
   <scope>test</scope>
</dependency>
...
<plugin>
   <groupId>org.codehaus.groovy.maven</groupId>
   <artifactId>gmaven-plugin</artifactId>
   <version>1.0</version>
   <executions>
      <execution>
         <goals>
            <goal>generateTestStubs</goal>
            <goal>testCompile</goal>
         </goals>
      </execution>
   </executions>
</plugin>

Groovy tests are placed in mymodule/src/test/groovy/.., java tests are placed in mymodule/src/test/java/...

After test-compile phase they both are in mymodule/target/test-classes/...

I don't have special section for surefire in my pom.xml, but from looking at local repository .m2 I can say that surefire plugin of version 2.4.3 is being used.


Test classes must end with "Test" in order to be selected by maven test phase. Just rename the class to SampleTest.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜