0
私はこの方法でテストを実行するためにJavaの/ Mavenプロジェクトを設定している:maven2 - なぜfailesafeプラグインが私のjunitアノテーションを無視していますか?
- ユニットテストは、確実なプラグインで実行されている
- 統合テストはフェイルセーフプラグイン
で実行されていますここでは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>
私はユニットテストクラスはそのように見ているサンプル(再び醜いコンプを持っています行為の形式):
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の注釈を無視しますか?
提供されたpomサンプルでは、ビルドセクションでフェールセーフプラグインの宣言を見つけることができます。そして、mvnの出力には、フェイルセーフセクションがあります... – Guillaume
申し訳ありません、パーツは私のリンゴモバイルデバイス#failで切り捨てられました。新しい答えはよかったはずです;) – krosenvold
これはうまくいきました。ありがとうございました! – Guillaume