【发布时间】:2014-06-04 04:58:52
【问题描述】:
我有一个 Cucumber Step 类,我正在尝试为所有场景初始化页面模型。所以我添加了一个@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();
}
我有多个 Step 课程。上述两种方法都在同一个 Step 类中。 但是 loginPage 始终为空。 beforeScenario 方法永远不会被调用。我是否完全误解了 @Before 的工作原理?关于如何获得我想要的工作的任何提示?
编辑:我还有一个 @After 注释方法,它会按预期在每个场景之后运行。
编辑:Pom 可见于:http://pastebin.com/PJ6qQRK9
【问题讨论】:
-
你怎么知道
beforeScenario永远不会被调用。您是否尝试过在那里插入println。试试看它是否被打印出来。 -
我知道它从来没有被调用过,因为我在 IDE 中运行时将断点放在那里,但我从来没有碰到过它们。我也知道,因为我的 @After 注释方法中的 LOGGER.info("Running after!") 行显示在我的日志中,而 beforeScenario 的预期日志行未写入日志。
-
检查你的 cucumber.yml 是否粘贴了 hooks 路径
-
它适用于我的版本
1.1.5 and 1.1.6。你是哪个版本的? -
@Bala :我是 1.1.7 版本,但降级到 1.1.5 没有帮助。