如何在TestNG.setTestClasses方法中动态设置类名?

时间:2018-09-28 22:39:12

标签: testng

我正在Windows 7上使用Java 10.0,Selenium 3.12.0和Eclipse Oxygen运行我的硒自动化测试。 我有一个主菜单,从中可以从javafx Combobox中选择目标(浏览器,URL,服务器),并从菜单项中选择所需的页面/模块。这些项目将保存在静态二维字符串数组中。并在单击按钮事件时将这些信息传递给根据发送的值运行实际测试的方法。

当我使用以下代码时,调用了方法,但是testng测试根本没有运行,并且在控制台中获得了以下内容。

方法代码:

public class RunTests
{
static TestNG tng;
public static void Run(String suitenm, String classnm)
{
    tng = new TestNG();
    tng.setOutputDirectory("D:\\PM\\Plums");
    List<XmlSuite> suites = new ArrayList<XmlSuite>();
    List<XmlClass> classes = new ArrayList<XmlClass>();
    XmlSuite suite = new XmlSuite();
    suite.setName(suitenm);

    XmlTest test = new XmlTest();
    test.setName("Staging-gms");


    XmlClass class1 = new XmlClass(classnm);
    classes.add(class1);

    test.setXmlClasses(classes);    
    suites.add(suite);
    System.out.println(suite.getName());
    System.out.println(class1.getName());           
    tng.setXmlSuites(suites);
    tng.run();      
}
}

Eclipse控制台:

  

启动ChromeDriver 2.40.565498   (ea082db3280dd6843ebfb08a625e3eb905c4f5ab)在端口40958上仅本地   允许连接。 2018年10月4日10:37:51 PM   org.openqa.selenium.remote.ProtocolHandshake createSession INFO:   检测到的方言:OSS

     

MySuite packagea.homepage

     

= =============================================== MySuite总共运行测试:0,失败:0,跳过:0   = ============================================

但是,当我使用文字值运行以下代码时,它就会执行

成功执行的代码

public class RunTests
{
static TestNG tng;
public static void Run(String suitenm, String classnm)
{
    tng = new TestNG();
    tng.setOutputDirectory("D:\\PM\\Plums");

    tng.setTestClasses(new Class[]
    {
    packagea.homepage.class 
    });
    tng.setDefaultSuiteName("Suite");
    tng.setDefaultTestName("Test");
    tng.run();
}
}

Eclipse控制台:

  

= ===============================================   套件运行的总测试次数:12,失败次数:3,跳过次数:0   = ============================================

我的动态方法缺少什么?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方法获取类名,

String className = this.getClass().getSimpleName();