Выполнить текущий тест Junit в GWTTestCase - PullRequest
3 голосов
/ 14 февраля 2011

У меня есть тест JUnit, который я запускаю на одном классе, но недавно я написал эмулированную версию для GWT.Поскольку спецификация та же, я хотел бы использовать тот же тестовый пример, но я хочу, чтобы он выполнялся в среде GWT, что обычно достигается путем расширения GWTTestCase.

Я действительно хочу избегать любой копии/ paste ерунда, потому что в будущем, скорее всего, будут добавлены тесты, которые я не буду обременять копированием позже.

Как я могу импортировать / наследовать свой стандартный модульный тест, который будет выполняться как обычный тесткейс или тест GWT?

Ответы [ 2 ]

6 голосов
/ 14 февраля 2011

Я нашел решение этой проблемы.

Если вы расширили исходный тест с помощью GWTTestCase, вы можете переопределить getModuleName, чтобы возвратить ноль. Это говорит GWTTestCase запускаться как обычный чистый тест Java (без перевода вообще).

Затем вы можете расширить этот тестовый пример, который переопределяет getModuleName для возврата имени модуля, и те же тесты будут выполняться с переводом.

В основном:

public class RegularTest extends GWTTestCase {

  @Override
  public String getModuleName() { return null; }

  public void testIt() {...}

}

... и версия GWT ...

public class GwtTest extends RegularTest {

  @Override
  public String getModuleName() { return "some.module"; }

}

Недостатком этого является то, что оно заставляет вас использовать тесты в стиле JUnit3, что, на мой взгляд, немного раздражает, но это лучше, чем альтернатива.

0 голосов
/ 14 февраля 2011

Я думаю, что нет простого пути ... Но вы можете извлечь интерфейс вашего теста junit, теста gwt и теста junit, реализующего этот интерфейс. Вы можете создать третий класс для реализации, все методы вызова теста gwt test и junit test делегированы этому классу реализации.

public interface IRegularTest {
       public void testSomething();
       public void testSomething2();
}

public class RegularTestImpl implements IRegularTest {

      public void testSomething(){
         // actual test code
      }

      public void testSomething2(){
         // actual test code
      }

}

public class RegularTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

      public void testSomething2(){
      }
}


public class GwtTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

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