错误:java.lang.IllegalArgumentException:在 SpringBootTest 中针对 RestTemplate 使用 RestAssured 时,URI 不得为 null

问题描述 投票:0回答:1

这是设置配置的

BaseTest
抽象类:

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

@Value("${local.server.port}")
private int serverPort;

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

测试课程非常简单:

public class TestIT extends BaseIntegration{//Test Code}

RestClient
使用
RestAssured
创建:

public static TestResponse postResponse(TestRequest request) {

    return given().log().all()
            .contentType(ContentType.JSON)
            .body(request)
            .when()
            .log().all()
            .post("/weather")
            .as(TestResponse.class);

}

当测试在 teamcity 中运行时,错误日志如下所示:

java.lang.IllegalArgumentException: URI must not be null
at org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.util.UriComponentsBuilder.fromUriString(UriComponentsBuilder.java:189) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.util.DefaultUriTemplateHandler.initUriComponentsBuilder(DefaultUriTemplateHandler.java:114) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.util.DefaultUriTemplateHandler.expandInternal(DefaultUriTemplateHandler.java:103) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.util.AbstractUriTemplateHandler.expand(AbstractUriTemplateHandler.java:106) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:612) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:407) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]

我没有使用

RestTemplate
TestRestTemplate
。还有另一个测试正在使用它,并且该测试运行良好。我无法理解是什么原因导致了这个问题。

编辑:

服务端点似乎正在使用

RestTemplate

restTemplate.postForEntity(url, body, TestResponse.class);

调用端点时,我的测试失败。我认为

RestTemplate
RestAssured
库存在一些兼容性问题。

java spring-mvc spring-boot rest-assured
1个回答
0
投票

您已经复制了

.log().all()

return given().log().all()
        .contentType(ContentType.JSON)
        .body(request)
        .when()            
        .post("/weather")
        .andReturn()
        .as(TestResponse.class);
© www.soinside.com 2019 - 2024. All rights reserved.