2016-07-19 11 views
1

私はテストケースでSpringJUnit4ClassRunnerを使用しようとしています。 @Testメソッドが1つしかないテストでは、完全に動作します。 しかし、いくつかの@Testメソッドを使ったテストでは時々動作しますが、時にはNPEやIllegalStateExceptionが発生することがあります。 @DirtiesContextアノテーションなしで、そして異なるclassModeモードで試してみました。テストでの奇妙なコンテキスト動作

これは、私がmavenプロジェクトをビルドする場合にのみ発生します。 IDEからこのテストを実行すると、すべて正常です。

P.S.私の状況は無国籍です。ここで

@RunWith(SpringJUnit4ClassRunner.class) 
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) 
@ContextConfiguration(classes = {TestConfiguration.class}) 
@ActiveProfiles("dummy") 
public class TestFieldMapping { 

    @Autowired 
    private ApplicationContext context; 

    @Test 
    public void test1() { 
     context.getBean... 
    } 

    @Test 
    public void test2() { 
     context.getBean... 
    } 

    @Test 
    public void test3() { 
     context.getBean... 
    } 

} 

答えて

1

は、私が見つけたものです:

SpringJUnit4ClassRunnerは私がSUNFIRE

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <parallel>classes</parallel> 
        <reuseForks>true</reuseForks> 
        <threadCount>1</threadCount> 
       </configuration> 
      </plugin> 
並列=クラスを設定することによってそれを解決し

https://jira.spring.io/browse/SPR-12421

マルチスレッドモードと互換性がありません