我有一个cucumber步骤类,我试图为所有场景初始化一个页面模型。所以我添加了一个@Before注释方法:
@Before()
private void beforeScenario() {
LOGGER.info("Running before!");
loginPage = BrowserDriver.getPageModel(LoginPage.class);
}
然后我有一堆依赖于设置loginPage的步骤。例如
@When("^I click the help link$")
public void I_click_the_help_link() {
loginPage.clickHelpLink();
}
我有多个步骤类。上述两种方法都在同一步骤类中。但是,loginPage始终为空。从未调用BeforeSceenario方法。我是否完全误解了@Before的作用?关于如何获得我想要的工作有什么建议吗?
编辑:我还有一个@After注释方法,它确实在每个场景后按预期运行。
编辑:Pom可在以下网站查看:http://pastebin.com/PJ6qQRK9
这个问题有一个公认的答案,但我想指出Matt Watson的评论,它为我解决了这个问题,我在其他地方没有看到类似的建议:
我已经尝试了一些cucumber-jvm测试,我想我已经发现了它。您的< code>@Before方法应该是< code>public而不是< code>private
@Before
方法必须是公共方法
。
您好,我知道这是一篇老文章,但这些解决方案都不适合我。所以我将分享我的解决方案。
我在包< code > com . my company . automation . util 下创建了类< code>Hooks
package com.mycompany.automation.util;
import com.mycompany.automation.rest.database.AS400DBManager;
import cucumber.api.java.After;
import java.sql.SQLException;
/**
* @author <a href="mesaj@mycompany.com">Julian Mesa</a>
* @version 0.1.0
* @since 0.1.0
*/
public class Hooks {
@After
public void beforeScenario() throws SQLException, ClassNotFoundException {
System.out.print("Closing connection.");
AS400DBManager.getInstance().closeConnection();
}
}
然后我在流道的胶水选项中指定了包:
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = {"com.mycompany.automation.features.steps",
"com.mycompany.automation.util"}
)
它奏效了。
> < li>
确保您使用的是< code > cucumber . annotation . before ,而不是< code>org.junit.Before。Cucumber不会处理JUnit注释。(更多信息在这篇博文的场景钩子部分。)
确保@Before方法是public
,而不是private
。
问题内容: 我有一个Cucumber Step类,我正在尝试为所有方案初始化页面模型。所以我添加了一个@Before注释方法: 然后,我有了一系列依赖于loginPage设置的步骤。例如 我有多个Step类。上面的两个方法都在同一Step类中。但是loginPage始终为null。永远不会调用beforeScenario方法。我是否完全误解了@Before是如何工作的?关于如何获得我想要的工作的任
我想为每个特定的功能文件指定特定的设置和拆卸步骤。我已经看到了允许代码在每个场景之前执行的钩子,以及在每个功能之前执行代码的钩子。但是我想指定代码在所有场景为一个特定功能运行之前和之后运行一次。 这有可能吗?
问题内容: 我想为每个特定功能文件指定某些设置和拆卸步骤。我已经看到了允许在每个场景之前执行代码的钩子,并且允许在每个功能之前执行代码的钩子,但是我想指定代码在针对一个特定功能的所有场景下运行之前和之后运行一次。 这可能吗? 问题答案: 你用黄瓜jvm吗?我找到了适合您要求的文章。 http://zsoltfabok.com/blog/2012/09/cucumber-jvm- hooks/ 基本
我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch
问题内容: 我想在Django中创建一个多步骤表单,该表单仅在所有步骤结束时提交要处理的数据。每个步骤都必须能够访问和显示我们在先前步骤中输入的数据。 有没有办法用Django做到这一点?Django的Form-Wizard无法处理此基本功能。 问题答案: 当然,在Django中有一种方法可以做到这一点。 一种方法是保持会话中的值,直到最后提交它们。如果返回上一步,则可以使用会话中保留的值填充表单
我有一个由两个步骤组成的Spring批处理作业(到目前为止)。 作业的第一步是在任务中实现的。它接受需要处理的逗号分隔值(CSV)文件(使用很好的业务逻辑块来确定哪些文件),并将它们复制到“Drop Zone”目录中。