有时候我们会遇到, cucumber Hooks文件里的@Before @After不执行,通常是因为下面的几个原因:
- Before , After 需来自于Cucumber的包, eg: io.cucumber.java.Before;
- @Before, @After的方法需要是public的, 不能是private的
package cucumber.Hooks;
import io.cucumber.java.After;
import io.cucumber.java.Before;
public class Hooks {
@Before
public void Before() {
System.out.println("Before test");
}
@After
public void After() {
System.out.println("After test");
}
}
- 记着把Hooks的路径加进TestRunner
package TestRunner;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/",
glue = {"Football/StepDefs", "cucumber/Hooks"},
plugin = {"pretty","json:target/cucumber-report.json","junit:target/cucumber.xml","html:target/cucumber-html-report","rerun:target/rerun.txt"},
monochrome = true,
tags = "@SIPS"
)
public class TestRunner {
}
我的目录结果: