我试图在下面的步骤定义实现中调用
@Given("^a user is logged into application with \"([^\"]*)\" and \"([^\"]*)\"$")
public void a_user_is_logged_into_application_with_and(String arg1, String arg2) throws Throwable
{
open();
login(arg1, arg2);
}
来自下面的另一个步骤定义实现:
@Given("^Run Add Business scenario$")
public void run_Add_Business_scenario() {
Given("a user is logged into application with 'clfmanager' and 'rules'");
}
我无法做到,无论如何我能做到吗?
答案 0 :(得分:3)
@ canpan14建议这个解决方案:
@Given("Login with username (.+) and password (.+)")
public void login(String user, String pass){
// Login here
}
@Given("Login with defaults")
public void loginWithDefaults(){
login("defaultUser","defaultPass")
}
不幸的是,这是从另一个步骤调用步骤的示例。
我提倡的解决方案看起来更像是:
public class LoginSteps {
private LoginHelper loginHelper = new LoginHelper();
@Given("Login with username (.*) and password (.*)")
public void login(String user, String pass) {
loginHelper.login(user, pass)
}
@Given("Login with defaults")
public void loginWithDefaults() {
loginHelper.login("defaultUser", "defaultPass")
}
}
具有可重用逻辑的辅助类:
public class LoginHelper {
public void login(user, pass) {
// login logic lives here and can be referenced from multiple steps
}
}
最大的区别是我将登录逻辑解压缩到辅助类中的方法。这允许我编写易于理解的单行步骤。
我将帮助器方法移动到另一个类,以确保无论你从哪个步骤类调用它都很容易掌握。
答案 1 :(得分:2)
解决方案不是这样做的。
您应该做的是创建两个步骤都使用的帮助程序类。这是在Cucumber中重用和避免重复的方法。
答案 2 :(得分:0)
@Given("Login with username (.+) and password (.+)")
public void login(String user, String pass){
// Login here
}
@Given("Login with defaults")
public void loginWithDefaults(){
login("defaultUser","defaultPass")
}
请记住,即使我们使用Given / When / Then,这些仍然只是方法,可以用作方法。