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插件.