如何在Cucumber中组织规范定义?

Rom*_*las 16 java acceptance-testing cucumber cucumber-jvm cucumber-junit

我们正在考虑在我们的验收测试项目中使用Cucumber.

当我们写scenario在黄瓜feature,我们写的名单Given,WhenThen语句.

当我们使用cucumber-jvm项目时Given,WhenThen语句与(JUnit)类中的Java方法有关.

我想知道在项目结构中与Given/ When/ 相关的代码的最佳组织是什么Then.我主要担心的是在一个大项目上维护黄瓜测试,其中场景的数量非常重要,特别是关于功能之间共享的项目.

我可以看到至少两种主要方法:

  1. 每个功能都与它自己的JUnit类相关.所以,如果我有一个foo/bar/baz.feature黄瓜文件,我会发现相关型号foo.bar.Baz与适当的JUnit类@Given,@When@Then注释的方法.

  2. 独立@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,因此我想避免代码重复.这里的缺点是很难在@GivenJava方法和Given黄瓜语句之间建立联系(也许,IDE可以帮助吗?).

我对黄瓜很新,所以也许我的问题不是一个好问题,而且随着时间和经验,结构将是不言而喻的,但我希望得到关于其使用的良好反馈......

谢谢.

The*_*Cat 1

我们也开始使用 Cucumber-JVM 进行验收测试,并且在组织代码方面也遇到类似的问题。我们选择为每个功能设置 1 个步骤定义类。目前这很好,因为我们正在测试的功能不是很复杂并且非常独立,我们的功能很少有重叠。

我认为您提到的第二种方法会更好,但是将单个场景的多个不同步骤定义类结合在一起通常具有挑战性。我认为一旦你开始像往常一样添加更多功能并进行重构,最好的项目结构就会变得更加清晰。

同时这里有一个 Cucumber 的 Eclipse 插件,

https://github.com/matthewpietal/Eclipse-Plugin-for-Cucumber

它具有语法突出显示以及编写功能时现有可用步骤的列表。


归档时间:

查看次数:

5524 次

最近记录:

10 年,5 月 前