柑橘黄瓜或 citrus/xmlDSL 测试

citrus-cucumber or citrus/xmlDSL tests

我现在正在使用与黄瓜集成的柑橘框架。我正在考虑更改 XML DSL(或 java DSL)。我应该为每个不同的测试文件(xml 或 json)添加一个模板吗?以及 link 他们?

我的测试应该比较两个或更多文件。我可以只放这些文件的路径(我看到例子只是关于消息的..)?

非常感谢您的帮助!

如果您想将 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 测试,您可以在 send/receive 操作中提供文件路径。

<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 中的测试变量,它们可以帮助您获得更多动态测试数据。