Meg*_*lvi 7 java cucumber cucumber-junit cucumber-java
考虑我有以下功能文件:
登录功能
功能:登录网站
场景:现场登录验证
首页.专题
功能:欢迎页面验证
场景:验证登录后出现的页面
在Home.feature文件中,我需要先执行Login.feature,然后调用home.feature。因此,当我从跑步者测试中执行 home 时,它将依次执行登录,然后执行 home。
RunnerTest.java
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(strict = false, features = {
"src/test/resources/Features/Home.feature",
}, glue = { "tests" }, plugin = "html:target/cucumber-reports", format = { "pretty",
"json:target/cucumber.json" }, tags = { "~@ignore" })
public class RunnerTest {}
Run Code Online (Sandbox Code Playgroud)
您不需要从第二个功能调用第一个功能。您需要做的是在第二个功能中有一个步骤可以让您登录。它可以通过调用您在实现第一个功能时创建的代码来完成此操作。
第一个功能是您第一次实现登录时可能编写的内容。执行此操作时,您将执行这些步骤调用的步骤和代码来让您登录。
您应该创建的代码类型是(抱歉所有示例都是 ruby,我不做 java)
然后你可以编写一个辅助方法,例如
def login_as(user)
visit login_path
fill_in :email, with: user.email
fill_in :password, with: user.password
submit_form
end
Run Code Online (Sandbox Code Playgroud)
现在在你的第二个功能中你可以有类似的东西
Given I am an admin
When I login
Run Code Online (Sandbox Code Playgroud)
并将这些步骤实施为
Given 'I am an admin' do
# note create_user is a method you would have created when doing user
# registration/creation
@i = create_user(type: admin)
end
When "I login" do
login_as @i
end
Run Code Online (Sandbox Code Playgroud)
在某个地方你会有一些辅助方法
module StepHelperMethods
def create_user
...
return user
end
def login_as(user)
...
end
end
World StepHelperMethods
Run Code Online (Sandbox Code Playgroud)
您的代码重用总是发生在较低的级别。理想情况下,您应该重复使用之前创建的帮助器方法来使其他方案发挥作用。您也可以直接调用步骤(嵌套步骤),但这是一件非常糟糕的事情。
| 归档时间: |
|
| 查看次数: |
14828 次 |
| 最近记录: |