私は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を呼び出すことですが、私は単体テストを使いたいと思います。前もって感謝します。
RestControllerのデバッグ方法を説明できますか?私はSpringBootTest.WebEnvironment.DEFINED_PORTに変更しましたが、あなたは示唆していますが、まだブレーキポイントをスキップしています。 – carlitos081
あなたのセットアップのデバッグはうまくいくはずです。チェックするべきことの1つは、あなたの残りの電話があなたが思っているサーバーに行くことです。デバッグモードではない他のインスタンスを実行していますか? ポートを標準とは異なる何かに強制します。 server.port = 9123をapplication.properties/yamlに追加してから、netstatを実行して、テストを開始するときにnetstatが稼動していることを確認します。 また、postConstructメソッドの行にブレークポイントを設定してみてください。テストで開始しているアプリケーションにヒットしていることを証明するためです。 – PaulNUK
デバッグモードでユニットテストを実行するとデバッグではテストが実行されますが、サービスではないのでIntellijから問題が発生しますので、@SpringBootTestが正しいサービスを使用しています – carlitos081