gpt4 book ai didi

java - @BeforeSuite 和 @AfterSuite 必须是静态的吗?

转载 作者:行者123 更新时间:2023-11-30 05:48:37 25 4
gpt4 key购买 nike

我看到了很多例子,在每个例子中我都没有看到任何关于 testNG 中 beforeSuite 和 afterSuite 中需要静态的内容

我的场景是我有 MainRunner 和 BaseTest 来扩展 MainRunner

主要跑者:

public static void main(String[] args) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { testRunner.class });
testng.addListener(tla);
testng.run();
}

public class baseTest {
static WebDriver driver;
public static mainPage main;
public static culturePage mainCulturePage;
public static mainArticle mainArticle;

基础测试:

@BeforeSuite
public static void setup() {
//locating the driver and maximize the browser window
System.setProperty("webdriver.chrome.driver" , "F:\\java-projects\\.AB-Settings Folder\\chromedriver.exe");
driver= new ChromeDriver();
driver.manage().window().maximize();

//create reporting folder and report
//init();


main = new mainPage(driver);
mainCulturePage = new culturePage(driver);
mainArticle = new mainArticle(driver);

}


@AfterSuite
public static void close() {
//extent.flush();
driver.quit();
}

}

所以问题是为什么我需要将其设为静态? (类和注释)以便它们运行?除了这些之外,静态的解释是什么?它在实例之外工作并且不需要实例?

还有哪些选项可以更改已弃用的内容:

testng.addListener(tla);

最佳答案

您可以使用多级继承来使您的代码更加结构化且易于维护,并且无需使用任何静态方法即可做到这一点。
例如:

public class ClassA {

public void setUp() {
// Perform the setup operation of the driver here
}

public void closeDriver() {
// Close the driver here
}
}

public class ClassB extends ClassA{

@BeforeSuite
public void initializeDriver(){
//Call the setUp method from ClassA here
setUp();
}

@AfterSuite
public void closeDriver(){
//Call the closeDriver method from ClassA here
closeDriver();
}

//Add all the other BeforeClass and AfterClass also in this class .

}

public class ClassC extends ClassB{

@Test
public void testMethod(){
// Write your test method here
}

}

因此,通过使用上述多级继承,您不需要将任何方法设为静态,并且每当 @Test 启动时,它都会自动运行 ClassB 方法,该方法将执行脚本的初始化和关闭驱动程序部分。

为了回答问题中已弃用的部分,当您知道该方法现已弃用时,可以在该方法之前使用 @Deprecated 注释,以便将来不再使用该方法。

如果有帮助请告诉我!!

关于java - @BeforeSuite 和 @AfterSuite 必须是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com