Ошибка при выполнении GWTTestCase с помощью знатока gwt плагин

Я создал тест, который расширяет GWTTestCase, но я получаю эту ошибку:

mvn integration-test gwt:test
...
Running com.myproject.test.ui.GwtTestMyFirstTestCase
Translatable source found in...                       
[WARN] No source path entries; expect subsequent failures
[ERROR] Unable to find type 'java.lang.Object'
[ERROR] Hint: Check that your module inherits 'com.google.gwt.core.Core' either directly or indirectly (most often by inheriting module 'com.google.gwt.user.User')
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.1 sec <<< FAILURE!

GwtTestMyFirstTestCase.java находится в/src/test/java, в то время как модуль GWT расположен в src/main/java. Я предполагаю, что это не должно быть проблемой.

Я сделал все требуемое согласно http://mojo.codehaus.org/gwt-maven-plugin/user-guide/testing.html и конечно что мой gwt модуль уже имеет com.google.gwt.core. Ядро косвенно импортируется.


4.0.0
com.myproject
main
jar
0.0.1-SNAPSHOT
Main Module


    com.myproject.MainModule



    com.myproject
    app
    0.1.0-SNAPSHOT




    
        com.myproject
        app-commons
        0.0.1-SNAPSHOT
    

    
        com.google.gwt
        gwt-dev
        ${gwt.version}
        provided
    





    
        
            org.apache.maven.plugins
            maven-dependency-plugin
            
                ../app/src/main/webapp/WEB-INF/main.tree
            
        
        
            org.codehaus.mojo
            gwt-maven-plugin


            
                    
                        
                            test
                        
                    
            

        
        
            org.apache.maven.plugins
            maven-jar-plugin
            
                
                    ${project.build.directory}/${project.build.finalName}/${gwt.module}
                
            
        
    



Вот тестовый сценарий, расположенный в/src/test/java/com/myproject/test/ui

public class GwtTestMyFirstTestCase extends GWTTestCase {

    @Override
    public String getModuleName() {
        return "com.myproject.MainModule";
    }

    public void testSomething() {


    }

}

Вот gwt модуль, который я пытаюсь протестировать, расположенный в src/main/java/com/myproject/MainModule.gwt.xml:





    

    

    

    

    

Кто-либо может дать мне подсказку или два о том, что я делаю неправильно?

10
задан IAdapter 2 May 2010 в 16:04
поделиться

3 ответа

Проблема заключалась в том, что тест выполнялся с помощью surefire, а не плагина gwt-maven. Мне пришлось явно исключить мои тесты gwt из плагина surefire:

<plugin>
       <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>

            <configuration>
                <excludes>
                    <exclude>**/*GwtTest*.java</exclude>
                    <exclude>**/*Gwt*Suite*.java</exclude>
                </excludes>
            </configuration>
</plugin> 

Я все еще не могу запустить тесты GWTTestCase, но это еще одна проблема и предмет для другого вопроса. Считаю этот вопрос решенным.

5
ответ дан 3 December 2019 в 17:19
поделиться

Я очень уверен, что эта ошибка не имеет ничего общего с настройкой maven. Сначала я предполагаю, что тесты не находятся на пути компиляции gwt ... Я предполагаю, что проблемный исходный код:

<source path="com.myproject.test.ui" />

попробуйте изменить на:

<source path="com/myproject/test/ui" />

или другой подходящий путь.

0
ответ дан 3 December 2019 в 17:19
поделиться

Я не думаю, что правильным решением будет просто исключить тесты из жизненного цикла maven. Какой смысл их писать? Что вам нужно сделать, так это правильно настроить maven-surefire-plugin, чтобы он работал.

Видите ли, этот плагин использует системный загрузчик классов для поиска классов, но GWTTestCase требует URLClassLoader . По этой причине вы получаете [ПРЕДУПРЕЖДЕНИЕ] Нет записей исходного пути; ожидайте последующих отказов .и следующее ClassNotFoundException . Но не беспокойтесь. Легко сказать maven использовать вместо этого URLClassLoader:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
     <useSystemClassLoader>false</useSystemClassLoader>
     <additionalClasspathElements>
       <additionalClasspathElement>${basedir}/src/main/java</additionalClasspathElement>
       <additionalClasspathElement>${basedir}/src/test/java</additionalClasspathElement>
     </additionalClasspathElements>
  </configuration>
  <executions>
    <execution>
      <phase>integration-test</phase>
      <goals>
        <goal>test</goal>
      </goals>
    </execution>
   </executions>
</plugin>

Обратите внимание на запись false . Также обратите внимание, что я добавил исходные коды своих тестов и основные каталоги, чтобы позволить GWT найти необходимые классы для генерации Javascript. Возможно, вам придется настроить его по-другому.

6
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: