2011-01-06 12 views
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の注釈を無視しますか?

答えて

1

コンフィギュレーションから削除

<junitArtifactName>none:none</junitArtifactName> 

。それはSurefireをJunit3モードで強制的に実行させます。

+0

提供されたpomサンプルでは、​​ビルドセクションでフェールセーフプラグインの宣言を見つけることができます。そして、mvnの出力には、フェイルセーフセクションがあります... – Guillaume

+0

申し訳ありません、パーツは私のリンゴモバイルデバイス#failで切り捨てられました。新しい答えはよかったはずです;) – krosenvold

+0

これはうまくいきました。ありがとうございました! – Guillaume

関連する問題