小编典典

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

spring-boot

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

尽管看起来容器可以正常旋转,但是请放心(其他任何问题似乎都难以解决。

我一直在获得Connection拒绝异常。

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传递并打印它应该显示的内容,但是却导致test2Connection拒绝异常。

任何想法此设置有什么问题吗?


阅读 614

收藏
2020-05-30

共1个答案

小编典典

我会自己回答这个问题。

在花费了额外的时间后,事实证明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);
    }

}

我本可以发誓以前尝试过这种方式…但是我想我确实为此使用了其他一些注释…

2020-05-30