- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到了很多例子,在每个例子中我都没有看到任何关于 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/
我使用 testng 来运行测试。我有几个测试套件(Suite1.xml、Suite2.xml 和 Suite3.xml),它们组合在一个套件中( MasterSuite.xml)。除此之外,我还有
我看到了很多例子,在每个例子中我都没有看到任何关于 testNG 中 beforeSuite 和 afterSuite 中需要静态的内容 我的场景是我有 MainRunner 和 BaseTest 来
我有以下@AfterSuit方法。如果我删除 alwaysRun=true,TestNG 不会执行它。 @AfterSuite(alwaysRun=true) public void finishsu
我有几个套房,如 Suite1、Suite2、Suite3 等。我还有一个名为 CommonSuite 的通用套件,它具有 @BeforeSuite 和 @AfterSuite 方法。我有一个 tes
我是一名优秀的程序员,十分优秀!