Maven не запускает тесты TestNG, сгенерированные groovy компилятором - PullRequest
1 голос
/ 26 августа 2011

У меня есть проект Java с тестами, написанными на groovy.

Я использую TestNG в качестве основы для модульного тестирования.

У меня также есть несколько тестов, написанных на Java.

Послеmaven test-compile phase все тесты (как groovy, так и java) компилируются и помещаются в аналогичную папку внутри target/test-classes/.

Когда я хочу запускать тесты с maven, запускаются только тесты java.

Когда я пытался запустить Groovy Test из IDE (IntelliJ IDEA), он отлично работает.

Я декомпилировал Groovy Test и вот что у меня есть:

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: Связанные с 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>

Groovy-тесты помещаются в mymodule/src/test/groovy/.., java-тесты помещаются в mymodule/src/test/java/...

После фазы test-compile они оба находятся в mymodule/target/test-classes/...

У меня нет специального раздела для точного запуска в моем pom.xml, но я смотрю на локальный репозиторий .m2 IМожно сказать, что используется верный плагин версии 2.4.3.

1 Ответ

5 голосов
/ 26 августа 2011

Тестовые классы должны заканчиваться словом «Тест», чтобы их можно было выбрать на этапе тестирования maven.Просто переименуйте класс в SampleTest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...