java - 使用 restAssured 测试 Spring Boot Rest 应用程序

我已经为此苦苦挣扎了一段时间。 我想使用 restAssured 来测试我的 SpringBoot REST 应用程序。

虽然看起来容器正常旋转,但请放心(其他任何东西似乎都无法触及它。

我总是收到 Connection denied 异常。

java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
...

我的测试课:

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

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void test() {
        System.out.println(this.restTemplate.getForEntity("/clothes", List.class));
    }

    @Test
    public void test2() throws InterruptedException {
        given().basePath("/clothes").when().get("").then().statusCode(200);
    }

}

现在对于奇怪的部分,test 通过并打印它应该的内容,但是 test2 得到 Connection refused 异常。

你知道这个设置有什么问题吗?

最佳答案

我会自己回答这个问题..

在花费额外的时间后,发现 TestRestTemplate 已经知道并设置了正确的端口。 RestAssured 不会...

这样我就达到了以下测试运行没有任何问题的地步。

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

    @LocalServerPort
    int port;

    @Before
    public void setUp() {
        RestAssured.port = port;
    }

    @Test
    public void test2() throws InterruptedException {
        given().basePath("/clothes").get("").then().statusCode(200);
    }

}

我本可以发誓我以前尝试过这样做...但我想我确实使用了其他一些注释...

https://stackoverflow.com/questions/40665315/

相关文章:

java - Spring Boot 是否可以使用 JAR 包装来提供 JSP?

java - Spring Security 中的 "principal"是什么?

java - servlet 映射 url 模式上的双通配符 (*) 是什么意思?

spring - Thymeleaf - 使用 PUBLICID "null"请求的不受支持的实体

spring - 是否可以在表单 :select/form:option 的 itemLabel 中

java - SpringBoot - BeanDefinitionOverrideExceptio

java - 使用 Spring 将文本文件直接注入(inject) String

java - 通过 Spring 将字段注入(inject) Hibernate 加载的实体中

database - Spring Batch Framework - 自动创建批处理表

mysql - spring jpa application.properties useSSL