2017-02-05 13 views
1

Springとの統合テストを勉強しようとしています。だから私はこのチュートリアルを次のです:@SpringBootTestでSpringの統合テストを実行する方法

http://www.lucassaldanha.com/unit-and-integration-tests-in-spring-boot/

私はFASEこのようなテストクラス午前:

@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 
public class GreetingControllerTest { 

    @Test 
    public void helloTest(){  
     TestRestTemplate restTemplate = new TestRestTemplate(); 
     Hello hello = restTemplate.getForObject("http://localhost:8080/hello", Hello.class); 

     Assert.assertEquals(hello.getMessage(), "ola!"); 
    } 
} 

しかし、ときに私MVNをインストールし、私はこのエラーを取得する:

"http://localhost:8080/hello"のGET要求でI/Oエラーが発生しました:接続が拒否されました。入れ子になった例外はjava.net.ConnectExceptionです:接続が拒否されました

どうして間違っていますか?テストをするために必要なことは?

注:私はMVNスプリング・ブートを実行する場合:実行は、プロジェクトが正常に動作し、私は、任意のブラウザを使用して、エンドポイントを要求します。

+0

私はあなたが 'TestRestTemplate'を注入する必要があると信じています。どちらか、または 'RANDOM_PORT'を使用しているので、ポートを指定しないでください。 – chrylis

答えて

1

ため、テストクラスの次のプロパティのです:春documentation 1として

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 

、それはランダムなポートにアプリケーションをバインドします。そのため、リクエストを送信している間に、アプリがport 8080で実行されていない可能性があるため、接続が拒否されるというエラーが表示されます。

あなたが特定のポート上でアプリケーションを実行したい場合は、あなたがwebEnvironmentプロパティを削除し、次のあなたのクラスに注釈を付ける必要があります。

@IntegrationTest("server.port=8080")

別のアプローチは、ポートを取得し、にそれを追加することです以下のURLは、ポートを取得するスニペットです。

@Autowired 
Environment environment; 

String port = environment.getProperty("local.server.port"); 
+0

それは働いた。ありがとうDarshan Mehta! –