Maven不运行groovy编译器生成的TestNG测试

Rom*_*man 1 java groovy testng maven

我有一个java项目,测试用groovy编写.

我使用TestNG作为单元测试框架.

我也有几个用java编写的测试.

在maven test-compile阶段之后,所有测试(groovy和java)都被编译并放在类似的文件夹里面target/test-classes/.

当我想用maven运行测试时,只运行java测试.

当我尝试从IDE(IntelliJ IDEA)运行groovy测试时,它运行得很好.

我反编译了groovy测试,这就是我所拥有的:

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 class 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到类似的问题?这可能有什么不对?它可以与类Sample实现的事实相关联GroovyObject吗?可以与糟糕的万无一失的版本连接吗?

谢谢!

UPD:
与Groovy相关的设置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>
Run Code Online (Sandbox Code Playgroud)

放置Groovy测试,放入mymodule/src/test/groovy/..java测试mymodule/src/test/java/...

经过test-compile阶段他们都在mymodule/target/test-classes/...

我没有专门的部分肯定pom.xml,但从查看本地存储库.m2我可以说2.4.3正在使用版本的surefire插件.

h3x*_*eam 5

测试类必须以"测试"结束才能通过maven测试阶段进行选择.只需将类重命名为SampleTest即可.