我有一個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