如何解决为什么@BeforeClass 不触发?
这是从现有代码库中提取的一个 Cucumber Scenario Outline,但我被要求使用 TestNG 进行尝试。一些内容(scenario()、scenario()、TestNGCucumberRunner、DataProvider)取自 stackoverflow 上的另一篇文章,因为我不知道如何使 Scenario Outline 与 TestNG 配合得很好。>
public class StepsSettings {
private WebDriver driver;
private SettingsPage settingsPage;
private SearchBlock searchBlock;
private TestNGCucumberRunner testNGCucumberRunner;
@Test
@Given("maximum results per page is set to {int}")
public void maximumResultsPerPageIsSetTo(int results) {
settingsPage = new SettingsPage(driver);
searchBlock = new SearchBlock(driver);
settingsPage.navigateto();
settingsPage.setNumberOfResults(results);
}
@Test
@When("the user searches for {string} in collection {string}")
public void theUserSearchesForInCollection(String key,String collection) {
searchBlock.performSearch(key,collection);
}
@Test
@Then("the number of publications displayed is no more than {int}")
public theNumberOfPublicationsdisplayedisNoMoreThan(int count) {
By articlesBy = By.cssSelector("article");
Assert.assertTrue(settingsPage.getobjects(articlesBy).size() <= count);
}
@Test(groups = "cucumber scenarios",description = "Runs Cucumber Scenarios",dataProvider = "scenarios")
public void scenario(PickleWrapper pickleEvent,FeatureWrapper cucumberFeature) throws Throwable {
testNGCucumberRunner.runScenario(pickleEvent.getPickle());
}
@DataProvider
public Object[][] scenarios() {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
return testNGCucumberRunner.provideScenarios();
}
@BeforeClass(alwaysRun = true)
public void setup() {
System.setProperty(
"webdriver.chrome.driver",System.getProperty("user.dir") + "\\webdriver\\chromedriver.exe"
);
driver = new ChromeDriver();
}
@AfterClass(alwaysRun = true)
public void teardown() {
driver.quit();
testNGCucumberRunner.finish();
}
}
在执行时,唯一的错误是 NullPointerException,因为 @BeforeClass 没有在 WebDriver 驱动程序 获取其值的地方触发。
处理场景大纲的部分我不完全理解,但至少我不会再遇到 cannot injection @test annotated method with 错误了。
解决方法
使用 Before/AfterClass 注释的方法必须是静态的。
,请使用@BeforeTest 而不是@BeforeClass。如果问题解决了,试着理解这里测试注解的流程。或在此处发表评论以获得进一步帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。