Запускать тесты из внутренних классов через Maven - PullRequest
11 голосов
/ 18 января 2010

У меня есть следующая структура тестов:

public class WorkerServiceTest {

    public class RaiseErrorTest extends AbstractDbUnitTest{
        @Test
        public void testSomething(){
        } 

        ...
    }

    ...
}

Это сделано, потому что я не хочу создавать отдельный файл класса для каждого теста, расширяющий AbstractDbUnitTest.

Проблема в том, что mvn test не запускает тест из моего внутреннего класса. Есть ли способ, как настроить Maven для запуска таких тестов? Конечно, я могу создавать методы в родительском классе, вызывая методы внутреннего класса, но я хочу более ясный способ.

Ответы [ 2 ]

11 голосов
/ 19 января 2010

Да, это возможно с использованием нового (ну, это больше не ново) Enclosed бегун (начиная с JUnit 4.5 ), который запускает все статические внутренние классы внешний класс.

Чтобы использовать его, просто аннотируйте внешний класс с помощью @RunWith(Enclosed.class) и сделайте внутренние классы статическими.

@RunWith(Enclosed.class)
public class WorkerServiceTest {

    public static class RaiseErrorTest extends AbstractDbUnitTest{
        @Test
        public void testSomething(){
        } 

        ...
    }

    ...
}

И mvn test запустит их.

9 голосов
/ 19 ноября 2015

Я объясняю (немного больше) найденное мной решение ...

Maven (AFAIK) по умолчанию использует плагин "maven-surefire-plugin" для запуска любых тестов, определенных в вашем проекте maven. Согласно документации этого плагина, по умолчанию он исключает тесты, которые заключены во внутренние статические классы (или, по крайней мере, это было в версии, которую я использую - 2.18.1).

Так что я сделал, чтобы поместить пустое правило исключения; В результате получается секция сборки POM:

<build>
  <plugins>
  ...
  <!-- ~~~~~~~~~~ SUREFIRE -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.18.1</version>
      <configuration>
        <excludes>
          <exclude></exclude>
        </excludes>
      </configuration>
    </plugin>
    ...
  </plugins>
</build>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...