【发布时间】:2020-09-14 10:40:25
【问题描述】:
我正在使用 Cucumber 和 Java 编写 BDD 测试。
我想从功能文件中的 usung 数据表迁移,因为我有很多字段并且它被复制了几个步骤,以使用指向带有值的表的链接。 从这一种方法:
GIVEN I created account with
| name | type |
| test | basic |
到方法:
GIVEN I created account with account.table
account.table 文件有值:
| name | type |
| test | basic |
我不知道如何将“带有 dataTable 的文件的路径”解析为实际的“dataTable”。 我试过这样写步骤:
@GIVEN("^I created account with \"([^\"]*)\"$")
public void createAccount(DataTable dataTable) { ... }
但它不起作用。因为没有从路径到文件到数据表的自动转换。 这是错误:
cucumber.runtime.CucumberException: 不知道如何转换 “resources\testdata\account.table” 到 cucumber.api.DataTable。尝试 编写自己的转换器: @cucumber.deps.com.thoughtworks.xstream.annotations.XStreamConverter(DataTableConverter.class)
有没有解析它的例子或任何想法?
【问题讨论】:
-
我认为您可以在黄瓜步骤中使用表名作为字符串,在步骤定义中您可以从外部路径访问该表并完成所需的操作。
-
但是如何将文件解析为dataTable?第一种方法会自动解析它。
-
它适用于第一种方法,因为它是黄瓜的内置功能。但你正在寻找不同的东西。为此,您可以通过使用
String argument编写程序从.table文件中读取数据,在步骤和步骤定义中将表名作为字符串传递。
标签: java datatable cucumber bdd