使用 Java 个对象进行 Cucumber 测试

Using Java objects for Cucumber testing

如何传递 java 个对象?

Scenario: Java Object test
    When I POST the URL to "/v1/gitlab/project/demo" with <java_object>
    Then I expect to see the response code "200"
    And I expect to see "json" content

如何以这种方式将 java 对象传递给 cucumber?或者如果不是 java 对象,那么我可以传递一个 json 文件吗?

您不能传递 java 对象。您可以通过 @Transform 注释制作自定义转换器,但不确定是否对您有帮助。我相信对你来说最好的选择是传递 JSON 字符串,然后在方法中从中创建一个 JSON 对象。为此,您将需要以下步骤定义:

@Given("^I have JSON string \"(\{(^\"]*\})\"")
public void someMethod(String jsonString) {
}

然后在功能文件中您可以使用以下行:

Given I have JSON string "{ 'key1' : 'value1', 'key2': 'value2' }"

为了保持测试干净,您可以使用示例并将确切的 JSON 字符串作为变量引用。希望这有帮助。

为此使用数据表更容易阅读:

Given I have the following data:
 | property1 | property2 |
 | abc       | 123       |

步骤定义如下:

@Given("^I have the following data:$")
public void given_data(DataTable table) {
    final List<Map<String, String>> rows = table.asMaps(String.class, String.class);
    final Map<String, String> data = rows.get(0);
    final String property1 = data.get("property1");
}

我还建议只指定与业务案例相关的属性,并在步骤定义中添加任何技术属性。至少在我看来,谈论 POST 和特定的 URL 也已经对黄瓜场景具有技术性。