在测试执行期间无法连接到本地主机
问题描述:
我正在测试spring-boot应用程序并希望检查简单的获取请求。事情是,如果我用我们的开发服务器替换本地主机一切正常。 但与localhost不同。在测试执行期间无法连接到本地主机
这是父测试类:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyServiceStarter.class)
public abstract class AbstractModulIntegrationTest { ... }
问题:
@Test
public void testGetRequest() {
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials
= new UsernamePasswordCredentials("user", "pass");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient httpClient = HttpClientBuilder.create()
.setDefaultCredentialsProvider(provider)
.build();
HttpGet request = new HttpGet("http://localhost:9000/abc/v1/users/001");
HttpResponse response = null;
try {
response = httpClient.execute(request); //HERE IT FAILS
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("RETURN CODE:" + response.getStatusLine().getStatusCode());
}
Stracktrace:
org.apache.http.conn.HttpHostConnectException: Connect to localhost:9000 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
...
Caused by: java.net.ConnectException: Connection refused: connect
任何帮助表示赞赏。
答
@SpringBootTest
默认情况下不会启动Web服务器。你可以问它使用webEnvironment
属性
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyServiceStarter.class, webEnvironment = RANDOM_PORT)
public abstract class AbstractModulIntegrationTest { ... }
开始定义的端口或随机端口上,你可以注入服务器的实际端口在您的测试如下:
@LocalServerPort
private int port;
public void testGetRequest() { ... }
如果你想要开始定义的端口,您可能已将您的应用程序配置为从端口9000开始(server.port=9000
)。那么您应该这样做:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyServiceStarter.class, webEnvironment = DEFINED_PORT)
public abstract class AbstractModulIntegrationTest { ... }
您的本地服务器是否在端口9000上侦听?尝试使用网络浏览器或telnet进行检查。 –
是的。它在端口9000 – IKo
和一个标准的程序可以连接到它? –