[英]Integration Tests fail to connect, Manual Browser Test succeeds with Java RESTful Web Service with SpringBoot/Jsoup Integration Test
我正在嘗試運行本書中的示例代碼: 使用Spring 5-Second Edition構建RESTful Web服務 。 您可以免費下載示例代碼。 在第7章中,它們具有一些示例代碼,其中包括所有集成測試和單元測試,它們均位於同一目錄“ chapter7 \\ ticketmanagement / src / test / java / com / packtpub / restapp / ticketmanagement /”中。 單元測試工作正常。 集成測試失敗,並顯示“ testUsersJsoup(com.packtpub.restapp.ticketmanagement.JsoupUserTest)經過的時間:1.011秒<<<錯誤!java.net.ConnectException:連接被拒絕:connect”
我嘗試在“ ticket-management \\ src \\ main \\ resources \\ application.properties”中將端口從8080更改為9090(我還更改了集成測試中的硬編碼值),但這沒有幫助。
因此,“ MVN測試”會產生上述錯誤。 在spring工具套件中運行它們也是如此。 我編輯了原始的pom.xml並添加了“ maven-compiler-plugin”以指定Java版本1.8。 我正在運行Windows 10。
因此,失敗的代碼在“第7章\\ ticket-management \\ src \\ test \\ java \\ com \\ packtpub \\ restapp \\ ticketmanagement \\ JsoupUserTest.java”中。
這是失敗的代碼:
public void testUsersJsoup() throws IOException {
String doc = Jsoup.connect("http://localhost:9090/user").ignoreContentType(true).get().body().text();
_log.info("{test} doc : " + doc);
JsonParser parser = new JsonParser();
JsonElement userElement = parser.parse(doc);
JsonArray userArray = userElement.getAsJsonArray();
_log.info("{test} size : " + userArray.size());
assertEquals(4, userArray.size());
}
但是,當我鍵入
mvn spring-boot:run
它成功啟動,我將chrome瀏覽器指向http:// localhost:9090 / user (如果使用原始代碼,則指向http:// localhost:8080 / user ),我看到了
[{"userid":100,"username":"David"},{"userid":101,"username":"Peter"},{"userid":102,"username":"John"}]
沒有連接錯誤! 結果看起來正確。
有一些注釋可以啟動Web應用程序,如以下示例所示: Spring Live Lessons Tutorial ,它們可以工作。 請參閱%JAVA_BUILDINGMICROSERVICES%\\ livelessons-security \\ livelessons-security-basic \\ src \\ test \\ java \\ basic \\ BasicSecurityApplicationTests.java。
這些注釋已被棄用,並被更新的注釋所取代。 問題在於,本教程的作者未正確使用這些新注釋:他還需要使用@WebAppConfiguration,這需要@SpringBootTest中的一些配置參數(他丟失了)。 因此,有必要在單獨的過程中使用“ mvn spring-boot:run”手動啟動Web服務器,然后運行測試。
當我嘗試使用@WebAppConfiguation時,出現了其他錯誤。 我將在另一篇文章中(某天)記錄這些錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.