2016-08-29 13 views
2

私はSpringブートで書かれたアプリケーションを持っており、そのためにいくつかの統合テストを書こうとしています。私は私の春のブートアプリケーションを実行し、それが終了するまで待つので、私はいくつかの状態をアサートすることができます。スプリングブートテスト - 終了を待つ

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(MyApp.class) 
@IntegrationTest("initParams") 
public class Test { 
    @Test 
    public void test() { 
    // need to wait until termination 
    } 

アプリケーションコードを変更せずにSpringアプリケーションの終了を待つ方法はありますか?

+0

テスト自体でアプリを実行したことはありますか? –

+0

どうすればいいですか? – KTrum

+0

私の答えとあなたのコメントから、あなたが求めていたものを誤解しているようです。あなたが望むのは、あなたのアプリケーションを起動し、何が統合テストを実行するのかを実行中の状態にすることができるように思えますか?しかし、混乱はあなたのテストのコメントから来ています://終了まで待つ必要があります – alexbt

答えて

1

することは、実際にテストの一部としてではなく、テストコンテキストがあなたのためにそれを開始させるよりも、アプリケーションを実行する方が良いだろう。なぜあなたがそれを必要としているのか分からず、すべてのユースケースでは推奨しませんが、これはうまくいく可能性があります:

public class Test { 

    @Test 
    public void test() { 
    String[] args = new String[]{"initParams"}; // To adapt 
    ConfigurableApplicationContext ctx = SpringApplication.run(MyApp.class, args); 
    // whatever 
    ctx.close(); 
    // whatever after the app has terminated. 
    } 
} 
1

これは良い考えであるかどうかはわかりませんが、ここにあります:@After@AfterClassの方法でいくつかのアサーションを実行できますか?あなたのテストが終了することをアプリに必要がある場合

@After 
public void afterMethods() { 
    //asserts 
} 

@AfterClass 
public static void afterClass() { 
    //asserts 
} 
+0

テスト自体はすぐに終了するので、動作しないと思われます:( – KTrum

+0

私はあなたが何を意味するかはわかりません。あなたのテストでは、テストの後にテストする方法を探していたことが分かりました。 – alexbt

関連する問題