我有一个java项目,用groovy编写测试。Maven不运行由groovy编译器生成的TestNG测试
我使用TestNG作为单元测试框架。
我也有几个用java编写的测试。
经过maven test-compile
阶段所有测试(包括groovy和java)都被编译并放置在target/test-classes/
的类似文件夹中。
当我想用maven运行测试时,只运行java测试。
当我试图从IDE(IntelliJ IDEA)运行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;
}
}
有没有人遇到了类似的问题?这里有什么可能是错的? 它可以与类Sample
实施GroovyObject
的事实联系起来吗?它可以与糟糕的保证版本连接吗?
谢谢!
UPD:在pom.xml
Groovy的相关设置:
<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的测试都放在mymodule/src/test/groovy/..
,JAVA测试都放在mymodule/src/test/java/..
。它们都在mymodule/target/test-classes/..
之后。我可以说2.4.3
版本的surefire插件正在被使用。
你的groovy测试中包含什么文件夹?你在pom.xml中的groovy编译器设置是什么样的?你在pom.xml中的surefire配置是什么样的? –
@matt b:参见upd部分。 – Roman
你尝试重命名测试类吗? – h3xStream