Automated tests 能否将结果(给定)保存到小黄瓜特征文件中的变量,然后将该变量与另一个结果进行比较(然后)?(黄瓜代表爪哇)

Automated tests 能否将结果(给定)保存到小黄瓜特征文件中的变量,然后将该变量与另一个结果进行比较(然后)?(黄瓜代表爪哇),automated-tests,gherkin,cucumber-java,Automated Tests,Gherkin,Cucumber Java,我不熟悉Cucumber for Java,并尝试自动测试由MS SQL server支持的SpringBoot服务器 我有一个端点“获取所有员工” 在编写传统功能文件时,我必须在@Then子句中列出所有员工。 数千名员工无法做到这一点 因此,我只想获取数据库中Employee表的行数,然后与“get All Employees”端点返回的对象数进行比较 比较 从员工中选择计数(*) 具有从返回的列表的大小 列出getAllEmployees() 但是如何将rowcount保存在功能文件中的变量

我不熟悉Cucumber for Java,并尝试自动测试由MS SQL server支持的SpringBoot服务器

我有一个端点“获取所有员工”

在编写传统功能文件时,我必须在
@Then
子句中列出所有员工。 数千名员工无法做到这一点

因此,我只想获取数据库中Employee表的行数,然后与“get All Employees”端点返回的对象数进行比较

比较

从员工中选择计数(*)

具有从返回的列表的大小

列出getAllEmployees()

但是如何将rowcount保存在功能文件中的变量中,然后将其传递到
stepdefs
Java方法中呢


我还没有发现Gherkin允许这样做的任何方式。

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

在执行步骤“和我从数据库获取员工数量”期间,您通过相应的设置器设置该数量,在步骤“和我获取所有员工”期间,您通过专用设置器设置数量。 然后在“我验证员工数量与数据库中的员工数量相同”的步骤中,通过getter获得这两个数字并进行比较


顺便说一句,如果您将员工的姓名放入列表并比较列表,则可以比较他们的姓名(而不仅仅是计数)。

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

在执行步骤“和我从数据库获取员工数量”期间,您通过相应的设置器设置该数量,在步骤“和我获取所有员工”期间,您通过专用设置器设置数量。 然后在“我验证员工数量与数据库中的员工数量相同”的步骤中,通过getter获得这两个数字并进行比较


顺便说一句,如果您将员工的姓名放入列表并比较列表,就可以比较他们的姓名(而不仅仅是人数)。

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

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

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

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


因此,小黄瓜不能做到这一点,但是
glue
类中较低级别的Java可以做到。

在编写了一些场景和功能文件之后,我理解了Cumber的这一点,并解决了这个问题

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

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

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


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

Cucumber允许getter吗?是的,它允许。这是在步骤之间共享数据的方法。Cucumber允许getter吗?是的,允许。这是在步骤之间共享数据的方法。