2017-12-18 20 views
0

私は春の起動アプリケーションのいくつかのインスタンスを持っています。各インスタンスは別々のJVMで実行されています。
1つのJVMでテストするためにJavaでテストを書く方法ですか?次のように:テストで複数の春の起動アプリケーションをインスタンス化する

  1. テスト用にいくつかの組み込みDBをセットアップするか、まったく模擬してください。私の春ブーツアプリの
  2. スタート2-5インスタンス
  3. いくつかの時間を待って
  4. すべて停止は、DBを確認し、すべての条件が満たされていることを確認し
  5. インスタンスを開始しました。

各インスタンスには独自のコンテキストとクラスパスがあります。
私はいくつかのシェルスクリプトのシナリオでそれを達成できると思いますが、私はJavaでそれを作りたいと思います。
ここで最善のアプローチは何ですか?

答えて

1

異なるポートを使用して複数回実行できます。

は私が

@RunWith(SpringJUnit4ClassRunner.class) 
public class ServicesIntegrationTest { 

    private RestTemplate restTemplate = new RestTemplate(); 

    @Test 
    public void runTest() throws Exception { 
     SpringApplicationBuilder uws = new SpringApplicationBuilder(UserWebApplication.class) 
       .properties("server.port=8081", 
         "server.contextPath=/UserService", 
         "SOA.ControllerFactory.enforceProxyCreation=true"); 
     uws.run(); 

     SpringApplicationBuilder pws = new SpringApplicationBuilder(ProjectWebApplication.class) 
       .properties("server.port=8082", 
         "server.contextPath=/ProjectService", 
         "SOA.ControllerFactory.enforceProxyCreation=true"); 
     pws.run(); 

     String url = "http://localhost:8081/UserService/users"; 
     ResponseEntity<SimplePage<UserDTO>> response = restTemplate.exchange(
       url, 
       HttpMethod.GET, 
       null, 
       new ParameterizedTypeReference<SimplePage<UserDTO>>() { 
       }); 

hereソース似た何かをしました。

+0

ありがとうございます!できます。春のブートアプリケーションの2つのコピーをインスタンス化し、それは問題なく実行されます。 – aleksei

+0

あなたが知っているかもしれない1つのこと。私は実行中のアプリケーションをトレースで区別しようとしていますが、私はここにこだわっています。私はこのようなプロパティーを追加しようとしていました。 '' logging.pattern.level = App-1''/'' logging.pattern.level = App-2 ''ですが、最初の' 'SpringApplicationBuilder.properties'' 。それがなぜ起こるのか、それを区別する正しい方法は何かをご存じですか? – aleksei

+0

2つあります - 設定プロパティが適用される前にロガーが初期化されています。 ORプロパティーソースは、SpringApplicationBuilderのプロパティーよりも高い優先順位を持ちます。私は値を取得するために使用されるソースのどこかの順序を見ましたが、現在見つけることはできません。 googleを試してみてください。 – StanislavL

関連する問題