【发布时间】:2018-09-26 08:43:20
【问题描述】:
我现在正在使用与黄瓜集成的柑橘框架。我正在考虑更改 XML DSL(或 java DSL)。我应该为每个不同的测试文件(xml 或 json)添加一个模板吗?并链接它们?
我的测试应该比较两个或更多文件。我可以把这些文件的路径(我看到的例子只是关于消息..)?
非常感谢您的帮助!
【问题讨论】:
标签: java cucumber integration-testing citrus-framework
我现在正在使用与黄瓜集成的柑橘框架。我正在考虑更改 XML DSL(或 java DSL)。我应该为每个不同的测试文件(xml 或 json)添加一个模板吗?并链接它们?
我的测试应该比较两个或更多文件。我可以把这些文件的路径(我看到的例子只是关于消息..)?
非常感谢您的帮助!
【问题讨论】:
标签: java cucumber integration-testing citrus-framework
如果您想将 Cucumber BDD 与 Citrus 一起使用,您应该使用 Java DSL,因为它已集成到编写 Cucumber 步骤定义类中。在步骤定义方法中,您当然可以从文件系统或类路径加载模板。假设您的 BDD 规范中有以下行。
When user adds entry "path/to/template.txt"
您可以使用步骤定义中的路径作为方法参数,并从文件系统或类路径加载模板。
@When("^user adds entry \"([^\"]*)\"$")
public void add_entry(String path) {
designer.http()
.client(todoClient)
.send()
.post("/todo")
.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.payload(new ClassPathResource(path));
}
当然,您也可以在通过文件模板接收和验证消息时这样做。
如果您在没有 Cucumber 的情况下进行纯 XML 测试,您可以在发送/接收操作中提供文件路径。
<testcase name="TodoList_Post_IT">
<actions>
<http:send-request client="todoClient">
<http:POST path="/todo">
<http:headers content-type="application/x-www-form-urlencoded"/>
<http:body>
<http:resource file="path/to/template.txt" />
</http:body>
</http:POST>
</http:send-request>
</actions>
</testcase>
这适用于 Http 和所有其他消息传输(JMS、WebSocket、SOAP WebServices,...)。
您还可以在模板文件中使用测试变量,以便在多个测试用例中重复使用它们。查看 Citrus 中的测试变量,它们可以帮助您获得更多动态测试数据。
【讨论】: