maven2 - почему плагин failesafe игнорирует мои аннотации к junit? - PullRequest
0 голосов
/ 06 января 2011

Я настроил проект Java / Maven для выполнения тестов следующим образом:

  • модульные тесты выполняются с плагином surefire
  • интеграционные тесты выполняются с отказоустойчивымплагин

вот POM (безобразно компактное форматирование):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.sample</groupId>
    <artifactId>sample-service</artifactId>
    <version>0.0.0</version>
    <name>sdp-sample-service</name>

    <build> <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration><debug>true</debug><source>1.6</source><target>1.6</target></configuration>
        </plugin>

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

        <plugin>
            <groupId>org.apache.maven.plugins</groupId><artifactId>maven-failsafe-plugin</artifactId><version>2.6</version>
                <executions><execution>
                        <id>integration-test</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <junitArtifactName>none:none</junitArtifactName>
                            <failIfNoTests>false</failIfNoTests>
                            <testFailureIgnore>true</testFailureIgnore>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.8.2</version><scope>test</scope></dependency>                    
    </dependencies>

</project>

У меня есть пример тестового класса UNIT, похожего на это (опять-таки безобразно компактный формат):

package org.sample;import java.util.logging.Logger;import org.junit.*;
public class SampleUnitTest {
    private static final Logger LOG = Logger.getLogger("SampleUnitTest");    
    @BeforeClass public static void beforeClass() {LOG.info("@BeforeClass");}    
    @Before  public void before() {LOG.info("@Before");}    
    @AfterClass public static void afterClass() { LOG.info("@AfterClass");}    
    @After public  void after() { LOG.info("@After"); }    
    @Test public void test1() { LOG.info("test1");}
    @Test public void test2() { LOG.info("test2");}
}

У меня точно такой же интеграционный тест:

package org.sample;import java.util.logging.Logger;import org.junit.*;
public class SampleIT {
    private static final Logger LOG = Logger.getLogger("SampleIT");
    @BeforeClass public static void beforeClass() {LOG.info("@BeforeClass");}
    @Before  public void before() {LOG.info("@Before");}
    @AfterClass public static void afterClass() { LOG.info("@AfterClass");}
    @After public  void after() { LOG.info("@After"); }
    @Test public void test1() { LOG.info("test1");}
    @Test public void test2() { LOG.info("test2");}
}

И вывод maven:

$ mvn clean install
...
[INFO] [surefire:test {execution: default-test}]
...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.sample.SampleUnitTest
6 janv. 2011 14:38:38 org.sample.SampleUnitTest beforeClass
INFO: @BeforeClass
6 janv. 2011 14:38:38 org.sample.SampleUnitTest before
INFO: @Before
6 janv. 2011 14:38:38 org.sample.SampleUnitTest test1
INFO: test1
6 janv. 2011 14:38:38 org.sample.SampleUnitTest after
INFO: @After
6 janv. 2011 14:38:38 org.sample.SampleUnitTest before
INFO: @Before
6 janv. 2011 14:38:38 org.sample.SampleUnitTest test2
INFO: test2
6 janv. 2011 14:38:38 org.sample.SampleUnitTest after
INFO: @After
6 janv. 2011 14:38:38 org.sample.SampleUnitTest afterClass
INFO: @AfterClass
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

...

[INFO] [failsafe:integration-test {execution: integration-test}]
...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.sample.SampleIT
6 janv. 2011 14:38:38 org.sample.SampleIT test1
INFO: test1
6 janv. 2011 14:38:38 org.sample.SampleIT test2
INFO: test2
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

...

Вопрос: почему отказоустойчивые интеграционные тесты полностью игнорируют мою аннотацию Junit?

1 Ответ

1 голос
/ 06 января 2011

Удалить

<junitArtifactName>none:none</junitArtifactName> 

из конфигурации.Это заставляет Surefire работать в режиме Junit3.

...