在步骤定义类中包含非步骤方法是否可以接受?

时间:2017-06-14 16:34:53

标签: testing automated-tests cucumber specflow gherkin

通常,人们会尽量保持步骤定义类的简单,并将大多数业务逻辑卸载到对象模型中。根据经验,我们尝试将步骤定义类中的方法限制为绑定步骤定义方法。

但是,在某些情况下,多个步骤定义使用类似的代码。一种方法是在同一步骤定义类中的新方法中提取此代码。例如:

[When(".....")]
public void WhenX() {
   // Do custom logic
   commonMethod():
}

[When(".....")] 
public void WhenY() {
   // Do custom logic
   commonMethod():
}

public void commonMethod() {
   // Common code
}

另一种方法是将此代码移动到辅助类。但是,由于此代码仅在单个类中使用,因此将其范围绑定到相应的类可能更有意义。

2 个答案:

答案 0 :(得分:1)

是的,这是可以接受的。我们可以将非步骤定义保留在同一个类中。它不会引起任何问题。

答案 1 :(得分:0)

步骤类只是普通的旧java类,因此您可以在其中执行任何操作。

我的步骤定义类中可能没有公共方法。我会声明它是私人的。如果它应该从其他步骤使用,我会在另一个类中编写它并在步骤定义类中使用它。这样做的好处是可以更轻松地在步骤之间共享通用功能。

这样提取逻辑可以看作是在步骤和被测系统之间创建辅助层的第一步,即生产代码。

使用辅助图层,从而将步骤保持为一个或两个衬垫,被认为是一种很好的做法。