2017-02-03 3 views
2

私はSpringBootで新しく、特に定型コードを削除する場合は特に気に入っています。 私は@RestControllerをテストするためのテストクラスを作成しました:SpringBootTestからSpringBootアプリケーションをデバッグする方法

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = NewBusinessRevitalizationApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
@TestPropertySource(properties = {"management.port=0"}) 
public class NBRControllerTest extends TestCase { 

@LocalServerPort 
private int port; 

@Value("${local.management.port}") 
private int mgt; 

@Autowired 
private TestRestTemplate testRestTemplate; 

@Test 
public void getApplicationByAgencyIdAndStatusTest() { 
    String uri = "http://localhost:" + this.port + "/nbr-services/applications/{status}?agencyIds=123456,56765,678576"; 
    Map<String, String> vars = new HashMap<String, String>(); 
    vars.put("status", "SAVED"); 
    ResponseEntity<String> response = testRestTemplate.getForEntity(uri, String.class, vars); 
    assertEquals(HttpStatus.OK, response.getStatusCode()); 
} 
} 

私がデバッグモードで実行した場合、私は私の@RestControllerクラスTestクラスをデバッグしていないことができます。

@RestController 
@RequestMapping("/nbr-services") 
public class NBRController { 

@Autowired 
private NBRServices nbrServices; 

private static Logger logger = LoggerFactory.getLogger(NBRController.class); 

@RequestMapping(value = "/configuration/environment/{environment}", method = RequestMethod.GET) 
@ResponseBody 
public String getConfiguration(@PathVariable("environment") String environment) throws RemoteException { 
    logger.debug("environment={}", environment); 
    String result = nbrServices.getConfiguration(environment); 
    return result; 
} 

私が持っていますTomcatのデバッグポートをセットアップしようとしましたが、運が悪いです。 @RestControllerをデバッグできる唯一の方法はデバッグモードで実行し、ブラウザからRestAPIを呼び出すことですが、私は単体テストを使いたいと思います。前もって感謝します。

答えて

0

おそらく、自分が思っているポートとは異なるポートで動作している可能性があります。

SpringBootTestアノテーションは、テストポートを制御するものです。ウリで

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) 
+0

RestControllerのデバッグ方法を説明できますか?私はSpringBootTest.WebEnvironment.DEFINED_PORTに変更しましたが、あなたは示唆していますが、まだブレーキポイントをスキップしています。 – carlitos081

+0

あなたのセットアップのデバッグはうまくいくはずです。チェックするべきことの1つは、あなたの残りの電話があなたが思っているサーバーに行くことです。デバッグモードではない他のインスタンスを実行していますか? ポートを標準とは異なる何かに強制します。 server.port = 9123をapplication.properties/yamlに追加してから、netstatを実行して、テストを開始するときにnetstatが稼動していることを確認します。 また、postConstructメソッドの行にブレークポイントを設定してみてください。テストで開始しているアプリケーションにヒットしていることを証明するためです。 – PaulNUK

+1

デバッグモードでユニットテストを実行するとデバッグではテストが実行されますが、サービスではないのでIntellijから問題が発生しますので、@SpringBootTestが正しいサービスを使用しています – carlitos081

0

あなたはtestRestTemplateがあなたのためにそれをしない、必要のない、http://localホスト+ポートを追加しています。これを削除して、デバッグポイントにヒットしてみてください

+0

これがうまくいかない場合は、私はモバイルで回答しています。明日PCから送信されます – rajadilipkolli

関連する問題