gpt4 book ai didi

spring - 无法使用 Cucumber 生成 Spring 休息文档

转载 作者:行者123 更新时间:2023-12-03 23:37:37 27 4
gpt4 key购买 nike

我正在尝试使用 spring cucumber jvm 测试我们服务的 rest API 的 spring rest 文档,但是当我尝试执行该场景时,最终会出现空指针异常,因为框架无法初始化 Junit 上下文。

错误信息:

java.lang.NullPointerException at 
org.springframework.restdocs.ManualRestDocumentation.beforeO‌​peration(ManualRestD‌​ocumentation.java:90‌​) at
org.springframework.restdocs.JUnitRestDocumentation.beforeOp‌​eration(JUnitRestDoc‌​umentation.java:76)

代码:

private AppProperties props;
@Before("@rest") public void beforeScenario() {
JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation( "target/generated-snippets" );
System.out.println( "jUnitRestDocumentation " +restDocumentation );
spec = new RequestSpecBuilder().addFilter( documentationConfiguration( restDocumentation ) ).build();
System.out.println( "\n spec init .. " +restDocumentation );
}

步骤定义代码:

@Given("^create a rest document for VHR API$")
public void create_a_rest_document_for_VHR_API() throws Throwable {
estAssured.given( spec )
.accept( "application/json" )
.filter( document( "vhrdocument" ) ) .when()
.get( props.getVhrrequesturl() + "/vhrData/{vehicleID}", "5VW4T7AU0FM029999" ) .then().log().all();
}

最佳答案

您没有使用 JUnitRestDocumentation ,因为它的预期用途。它被设计为用作 JUnit 规则,这意味着它应该是一个用 @Rule 注释的公共(public)字段:

@Rule
public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();

成为规则意味着 JUnit 将为每个测试自动调用 restDocumentation,从而允许 Spring REST Docs 设置和拆除特定于测试的上下文。 NullPointerException 发生是因为没有以这种方式调用 restDocumentation,因此没有设置上下文。

你还没有描述你是如何使用 Cucumber,但如果你正在使用它,JUnit runner您应该能够通过将 restDocumentation 声明为 @Rule 注释字段来解决问题,如上所示。如果你不使用它的 JUnit 运行器,你可能需要使用 Spring REST Docs 的 ManualRestDocumentation 代替。 Spring REST Docs 引用文档包含 a section描述了在不使用 JUnit 时如何设置测试。

关于spring - 无法使用 Cucumber 生成 Spring 休息文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47422929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com