首页 > 解决方案 > Java Cucumber:使用动态示例创建场景大纲

问题描述

我们有一个测试,基本上我们需要在网站中输入一个特定的值,并确保另一个值出现。为此的输入输出数据存储在一个 XML 文件中。

现在我们可以创建一个运行一次并循环的单一场景,提交每个值但是我们遇到一些报告问题,如果 100 对中有 2 对失败,我们想知道哪些是失败的,而不仅仅是整个场景的断言错误。

我们将使用场景大纲获得更清晰的报告,其中所有值都在示例表中。然后场景本身重复运行,我们可以将单个集合作为断言错误失败,并在报告中清楚地显示出来。

问题:我们不想将 xml 中的所有值硬编码到 .feature 中。它很吵,但如果值发生变化,更新速度也会很慢。我们宁愿只提供 XML 解析它并继续,如果事情发生变化,我们只需放入更新的 XML。

有没有一种方法可以创建动态示例,我们可以重复运行场景,每个数据案例一个,而无需在示例表中明确定义?

标签: javacucumberoutline

解决方案


为此使用 Cucumber 是个坏主意。您应该使用单元测试来测试此功能,降低您的堆栈。

在您的代码中的某个时刻,在用户输入他们的值后,该值将被传递给一个方法/函数,该方法/函数将返回您的答案。这是进行此类测试的地方。

遍历整个堆栈的黄瓜测试将比编写良好的单元测试慢 3 个数量级以上。因此,您可以在运行一个 cuke 所需的时间内在单元测试中测试数千对值。

如果您在 Cucumber 中进行此类测试,您很快就会得到一个运行时间太长的测试套件,或者只能以巨大的代价快速运行。这对一个项目是非常有害的。

Cuking 应该是一条快乐的路径(用户可以输入一个值并查看结果),也可能是一条悲伤的路径(用户输入一个错误的值并看到错误/解释)。其他任何事情都需要下推到单元测试中。


推荐阅读