2013-05-28 2 views
4

у меня есть интерфейс вроде этого:Maven безотказное плагин не будет работать тестовые классы аннотированные с JUnit Категория

public interface IntegrationTest { 
} 

Я настроить отказоустойчивый плагин так:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.14</version> 
    <configuration> 
     <groups>acme.test.IntegrationTest</groups> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Если я после этого создать интеграцию например,

@Category(IntegrationTest.class) 
public class ExampleClassIntegrationTest { 

@Test 
public void slow_and_painful_test() { 

Этот тест не запускается.

Если я однако назвать класс по Inclusions and Exclusions of Tests

**/IT*.java 
**/*IT.java 
**/*ITCase.java 

Как так:

@Category(IntegrationTest.class) 
public class ExampleClassIT { 

@Test 
public void slow_and_painful_test() { 

тест работает нормально. Почему я должен назвать тест? У меня есть аннотация, когда я использую тег groups-tag? Я что-то упускаю? при использовании JUnit утверждает, что вы можете использовать аннотацию Category на уровне класса.

+0

Чтобы отличить тест единицы измерения и интеграции, просто основывается на соглашении об именах, поэтому нет необходимости использовать группу в JUnit (кроме того, что это не лучший выбор для интеграционных тестов). – khmarbaise

+0

@khmarbaise Я не согласен, Категории - отличный способ организовать использование тестов без блокировки в соглашении об именах. Вот почему JUnit добавил их и почему различные плагины Maven поддерживают их. –

+0

Вы пробовали исключить категорию? Вам нужно ОБА или категорически игнорируется? –

ответ

0

Вы должны либо добавить JUnit как зависимость (> 4.8), которое уже сделано или, в частности, добавьте следующие строки в конфигурацию отказоустойчивого-плагин:

<plugins> 
[...] 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.14.1</version> 
    <dependencies> 
     <dependency> 
     <groupId>org.apache.maven.surefire</groupId> 
     <artifactId>surefire-junit47</artifactId> 
     <version>2.14.1</version> 
     </dependency> 
    </dependencies> 
    </plugin> 
[...] 
</plugins> 

Но я предполагаю, что это не изменит ситуацию.

+0

У меня уже был JUnit 4.10 как зависимость. И вы правы, меняя версию и добавляя, что зависимость surefire-junit47 не решила проблему. –

7

Thats, потому что это классы java по умолчанию, которые не позволяют включить безопасный плагин при выполнении. Однако вы можете более ездить это в вашем ПОМ с тегом:

например
<includes> 
<include>**/*.java</include> 
</includes> 

Чтобы включить все файлы Java.

Смежные вопросы