从另一个类运行TestNG测试

时间:2016-04-22 20:12:48

标签: selenium testng

有没有办法从另一个java类运行TestNG测试。

private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    object originalArgument = ((CustomBackgroundWorker)sender).Argument;

    // The rest of the stuff
    if (e.Cancelled) { ... }
    if (e.Error) {...}
    ...
}

我需要在具有不同参数的单个套件中运行相同的方法。(Inside for循环)

有可能吗?

另外,我看到dataprovider方法应该返回@Test public void f(Integer n, String s) { } 。这适用于具有两个参数的方法。我们可以发送两个以上的参数吗?

Object[][]

我试图通过使用一些TestNG类来实现它

@DataProvider
public Object[][] dp() {
    return new Object[][] { new Object[] { 1, "a" }, new Object[] { 2, "b" }, };
}

@Test(dataProvider = "dp")
public void f(Integer n, String s, char c, double d, String s2) {
}

我使用下面的代码运行一次public static void main(String[] args) { List<XmlClass> classes = new ArrayList<>(); classes.add(new XmlClass("com.test.PortalTest")); XmlSuite suite = new XmlSuite(); suite.setName("Portal Test Suite"); XmlTest test = null; for (int index = 0; index < 7; index++) { test = new XmlTest(); test.setName("Portal Test - " + index); test.setXmlClasses(classes); test.addParameter("downloadFileIndex", String.valueOf(index)); suite.addTest(test); } List<XmlSuite> suites = new ArrayList<XmlSuite>(); suites.add(suite); TestListenerAdapter testListenerAdapter = new TestListenerAdapter(); TestNG testNG = new TestNG(); Class[] classesClasses = {PortalTest.class}; testNG.setTestClasses(classesClasses); testNG.setXmlSuites(suites); testNG.addListener(testListenerAdapter); testNG.run(); System.out.println("Passed : " + testListenerAdapter.getPassedTests()); System.out.println("Failed : " + testListenerAdapter.getFailedTests()); System.out.println("Skipped : " + testListenerAdapter.getSkippedTests()); } 的方法。如何在同一测试中多次运行@Test方法。

@Test

1 个答案:

答案 0 :(得分:0)

  1. TestNG测试方法总是public,因此您可以从另一个测试类中实例化任何测试类的实例,只需从另一个测试类中调用您想要的方法。
  2. TestNG数据提供程序必须返回数组数组Object[][]或数组迭代器Iterator<Object[]>,因此您当然可以使用与您一样多(或很少)的参数。喜欢。
  3. e.g。

    @DataProvider
    public Object[][] dp() {
        return new Object[][] {
                new Object[] { 1, "a", 'x', 3.14, "pi" },
                new Object[] { 2, "b", 'y', 6.28, "tau" },
        };
    }
    
    @Test(dataProvider = "dp")
    public void f(Integer n, String s, char c, double d, String s2) {
        new OtherTestClass().f(n, s);
    }