可以将结果(Given)保存到小黄瓜特征文件中的变量中,然后将该变量与另一个结果(then)进行比较吗?(Java中的C



我是Cucumber for Java的新手,正在尝试自动化由MS SQL server支持的SpringBoot服务器的测试。

我有一个端点"获取所有员工"。

在编写传统的功能文件时,我必须列出@Then子句中的所有Employees。对于成千上万的员工来说,这是不可能的。

因此,我只想获得数据库中Employee表的行数,然后与"GetAllEmployees"端点返回的对象数进行比较。

比较

SELECT count(*) from EMPLOYEE

具有从返回的列表的大小

List<Employee> getAllEmployees()

但是,如何将rowcount保存在特性文件中的变量中,然后将其传递到stepdefsJava方法中呢?

我没有找到任何方式,小黄瓜允许这样做。

在编写了一些场景和功能文件后,我了解了Cucumber的相关内容并解决了这个问题。

黄瓜不是一种编程语言。它只是一种规范语言。当解释器到达GivenThen等关键字时,就会调用Java代码中的匹配方法。所以它们只是触发因素。

这些方法是Javaglue类的一部分。数据不会从Java类传递到小黄瓜特性文件中。类在开始时被实例化,并一直保留到结束。正因为如此,它可以存储状态。

因此,根据我在上面问题中的示例,Spring端点调用的Then响应将存储在glue类的member variable中。验证结果的下一个Then调用将调用相应的glue方法,该方法将访问成员变量中的数据以执行比较。

所以Gherkin不能做到这一点,但glue类中较低级别的Java可以做到。

您可以创建一个名为dataRun的包(包中有相应的类(,并在测试期间通过setter将详细信息保存在那里。

在执行"我从数据库中获取员工人数"步骤期间,您可以通过相应的设置器设置此人数,在执行"I get all employees"步骤期间通过专用设置器设置人数。然后,在"我验证员工人数与数据库中的人数相同"的步骤中,您可以通过getter获得这两个数字,并进行比较。

顺便说一句,如果你把员工的名字放进列表并比较列表,就可以比较他们的名字(而不仅仅是计数(。

最新更新