简体   繁体   English

如何通过testNG.xml文件将参数传递给@BeforeClass和@AfterClass方法

[英]How to pass parameters to @BeforeClass & @AfterClass methods through testNG.xml file

I am trying to pass parameter to @BeforeClass method through testNG.xml file, but when I run my script, neither the script is executed nor any error is shown in the console, just the script is terminated. 我试图通过testNG.xml文件将参数传递给@BeforeClass方法,但是当我运行脚本时,既不执行脚本也不在控制台中显示任何错误,只是脚本终止了。 Not sure where am I going wrong. 不知道我要去哪里错了。 Kindly help me on this. 请帮助我。

PS: Script is working good when I use @BeforeSuite annotation instead of @BeforeClass PS:当我使用@BeforeSuite注释而不是@BeforeClass时,脚本运行良好

Thanks in advance 提前致谢

Below is my code snippet: 以下是我的代码段:

BaseSetup.java BaseSetup.java

public class BaseSetup {

private  WebDriver driver;
private String userdir = System.getProperty("user.dir");
private  void SelectBrowser(String browsername){

    switch(browsername){

    case "GoogleChrome": 

        //initChromeBrowser();

        break;

    case "FireFox":

        initFireFoxBrowser();

        break;

    default: 
        System.out.println("Wrong input");      
    }

}

private  void initChromeBrowser(){

    System.setProperty("webdriver.chrome.driver", userdir +"\\chromedriver.exe");

    driver = new ChromeDriver();

    launchApp();

}   
private void initFireFoxBrowser(){

    System.setProperty("webdriver.gecko.driver", userdir +"\\geckodriver.exe");

    driver = new FirefoxDriver();

    launchApp();

}

private  void launchApp(){

    driver.manage().window().maximize();

    driver.get("https://www.google.co.in");
}

@Parameters({"browsername"})

@BeforeClass

public  void LaunchBrowser(String browsername){

        SelectBrowser(browsername);     
}
}

Below is my testNG.xml code 下面是我的testNG.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SampleTestSuite">
<test name="SampleTest">

<classes>

  <class name="com.pac.base.BaseSetup">
  <parameter name="browsername" value="FireFox"> </parameter>     
   </class>

   </classes>

   </test> <!-- Test -->
   </suite> <!-- Suite -->

I dont think there's any issue here. 我认为这里没有任何问题。 TestNG is actually not executing the BeforeClass method because the class doesn't contain any @Test methods in it. 实际上,TestNG没有执行BeforeClass方法,因为该类中不包含任何@Test方法。 BeforeSuite case is different because I guess in that case, its a suite level execution and there can be chances that some other class that is part of the execution might have a Test method in it. BeforeSuite情况有所不同,因为在这种情况下,我猜想它是套件级别的执行,并且可能会有一部分其他类作为执行的一部分在其中包含Test方法。 So TestNG executes it. 因此,TestNG执行它。

Here's a sample which demonstrates that parameters are passed properly 这是一个示例,说明参数已正确传递

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParameterizedClass {
    @Parameters({"browsername"})
    @BeforeClass
    public void setup(String browsername) {
        System.err.println("Browser name in @BeforeClass is " + browsername);
    }

    @Parameters({"browsername"})
    @Test
    public void testMethod(String browsername) {
        System.err.println("Browser name in @Test is " + browsername);
    }

}

Suite file 套件文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="1265_Suite" parallel="false" verbose="2">
    <test name="92" parallel="false" preserve-order="true">
        <classes>
            <class name="com.rationaleemotions.stackoverflow.ParameterizedClass"/>
            <parameter name="browsername" value="firefox"/>
        </classes>
    </test>
</suite>

Output 输出量

...
... TestNG 6.11 by Cédric Beust (cedric@beust.com)
...
Browser name in @BeforeClass is firefox
Browser name in @Test is firefox

===============================================
1265_Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何执行包含具有相同@BeforeClass 方法的测试类的 testng.xml 文件 - How to execute testng.xml file which contains test classes having the same @BeforeClass methods 如何忽略/跳过包含少量测试方法和BeforeClass&AfterClass方法的完整testng类 - How to ignore/skip complete testng class containing few test methods & BeforeClass & AfterClass methods TestNG 重试类不运行 @BeforeClass 也不 @AfterClass 方法 - TestNG retry class doesn't run @BeforeClass nor @AfterClass methods TestNG失败时重新运行测试,而不运行BeforeClass AfterClass方法 - TestNG Re run test on failure, not running BeforeClass AfterClass methods 如何传递整数数组testng.xml - How to pass an integer array testng.xml TestNG-如何通过testng.xml设置运行@Test方法的顺序? - TestNG - How can I set up the order of running @Test methods through testng.xml? 如何使用TestNG在循环中运行@beforeclass @test和@Afterclass案例 - How to run @beforeclass @test and @Afterclass cases in a loop using TestNG 将参数传递给@BeforeClass和@AfterClass方法 - Passing params to @BeforeClass and @AfterClass methods 如何通过mvn命令行传递testng.xml参数值 - how to pass testng.xml parameter value through mvn command line 运行 testng.xml 文件显示 Invoked Methods 错误 - Running testng.xml file shows Invoked Methods error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM