我们正在考虑在我们的项目中使用Cucumber进行验收测试。
当我们scenario
在 Cucumber中编写 a 时feature
,我们编写了Given
,When
和Then
语句的列表。
当我们使用cucumber-jvm项目时Given
,When
和Then
语句与(JUnit)类中的 Java 方法相关。
我想知道项目结构中与Given
//相关的代码最好的组织是什么。我主要关心的是维护一个大项目的黄瓜测试,其中场景的数量非常重要,尤其是关于功能之间共享的项目。When
Then
我可以看到至少两种主要方法:
每个特性都与它自己的 JUnit 类相关。所以如果我有一个
foo/bar/baz.feature
黄瓜文件,我会找到相关的foo.bar.Baz
JUnit 类,它有足够@Given
的@When
和@Then
注释的方法。@Given
将,@When
和方法分离@Then
到“主题”类和包中。例如,如果在我的黄瓜场景中我有一个语句Given user "foo" is logged
,那么带@Given("^user \"([^\"]*)\" is logged$")
注释的方法将位于foo.user.User
类方法中,但可能@When
稍后在同一黄瓜场景中使用的方法将位于不同的 Java 类和包中(比如说foo.car.RentCar
) .
对我来说,第一种方法似乎很好,因为我可以轻松地处理我的黄瓜特性和我的 Java 代码之间的关系。但缺点是我可以有很多冗余或代码重复。此外,可能很难找到可能的现有@Given
方法,以避免重新创建它(IDE 可以提供帮助,但这里我们使用的是 Eclipse,它似乎没有给出现有Given
语句的列表?)。
当您在多个黄瓜功能之间共享条件时,另一种方法似乎更好Given
,因此我想避免代码重复。这里的缺点是很难在@Given
Java 方法和Given
cucumber 语句之间建立联系(也许,IDE 可以提供帮助?)。
我对黄瓜很陌生,所以也许我的问题不是一个好问题,随着时间和经验,结构将是不言而喻的,但我想得到关于它的使用的良好反馈......
谢谢。