有没有办法在 Cucumber 示例数据 table 中使用变量?
Is there a way to use variables in Cucumber Examples data table?
基本上,我一直在寻找一种在 Cucumber 示例数据 table 中使用某种 Java 变量的方法。因此,post-执行,当生成报告时,我应该能够查看用作特定步骤的一部分的变量的当前值,而不是引用数据 table 单元格。
例如,考虑今天的日期或时间戳,因为我不想对这些变量进行硬编码。不使用变量,所有场景看起来都一样。
您要求的不是好的做法,恰恰相反。
当代码依赖于当前日期时间时,最好模拟当前日期时间以进行测试。
您可以将当前日期时间作为参数传递,也可以将其注入。
测试时,您传递硬编码的日期时间,这将是测试用例的先决条件。
当 运行 应用程序处于生产状态时,您传递了真实的当前日期时间。
Java 有一个用于模拟当前日期时间的有用类型,称为 Clock。
更新:
无论是否模拟日期时间,您都不能在 Cucumber 场景中使用变量,因为它没有任何意义。 BDD 是关于提供具有具体数据的具体示例。场景大纲中使用的变量只是将多个场景组合在一起的一种方式(我们为数据表中的变量提供的每种值组合)。
基本上,我一直在寻找一种在 Cucumber 示例数据 table 中使用某种 Java 变量的方法。因此,post-执行,当生成报告时,我应该能够查看用作特定步骤的一部分的变量的当前值,而不是引用数据 table 单元格。 例如,考虑今天的日期或时间戳,因为我不想对这些变量进行硬编码。不使用变量,所有场景看起来都一样。
您要求的不是好的做法,恰恰相反。
当代码依赖于当前日期时间时,最好模拟当前日期时间以进行测试。
您可以将当前日期时间作为参数传递,也可以将其注入。
测试时,您传递硬编码的日期时间,这将是测试用例的先决条件。
当 运行 应用程序处于生产状态时,您传递了真实的当前日期时间。
Java 有一个用于模拟当前日期时间的有用类型,称为 Clock。
更新:
无论是否模拟日期时间,您都不能在 Cucumber 场景中使用变量,因为它没有任何意义。 BDD 是关于提供具有具体数据的具体示例。场景大纲中使用的变量只是将多个场景组合在一起的一种方式(我们为数据表中的变量提供的每种值组合)。