将JUnitCore(JUnit)更改为TestNG

时间:2013-02-03 09:31:08

标签: java junit testng

我试图修改以下使用JUnit的代码,以使用TestNG。

公共类AutotestShellRunner {

static Class<?> autotestClass;
static org.junit.runner.Result junitResult; ( I replaced that with org.testng.ITestResult )

public static void main(final String[] args) {
    int rc;
    if (args.length != 2) {
        System.err.println("Usage: AutotestShellRunnerDrive  <TEST_SCENARIO_CLASS_NAME> <TEST_CASE>");
        System.exit(-1);
    }

    final String testsuite = args[0];
    final String testcase = args[1];

    try {
        autotestClass = Class.forName(testsuite);
    } catch (final ClassNotFoundException e) {t
        e.printStackTrace();
        throw new RuntimeException("class" + testsuite + " is not found ", e);
    }
    junitResult = (new JUnitCore()).run(Request.method(autotestClass, testcase));  //Now from what i saw i can use instead of JUnitCore I use TestNG

          The problem is that TestNG.run() is not recieving any arguments that I need to pass such as auttestClass and testcase
          Does anyone have any idea?

          Thanks,
          Nir        

2 个答案:

答案 0 :(得分:2)

使用TestNG的编程API here is the documentation

答案 1 :(得分:1)

以下情况有所帮助,但仍然无法仅在课程中运行特定测试

import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import java.util.Arrays;
import java.util.List;

/**
 * Created with IntelliJ IDEA. User: nir Date: 1/30/13 Time: 4:46 PM To change
 * this template use File | Settings | File Templates.
 */
public class AutoTestNGShellRunner {
    static Class<?> autotestClass;



    public static void main(final String[] args) {
        int rc;
        if (args.length != 2) {
            System.err
                    .println("Usage: AutoTestNGShellRunner  <TEST_SCENARIO_CLASS_NAME> <TEST_CASE>");
            System.exit(-1);
        }

        final String testsuite = args[0];
        final String testcase = args[1];

        try {
            autotestClass = Class.forName(testsuite);

        } catch (final ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("class" + testsuite + " is not found ",
                    e);
        }

        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testng = new TestNG();
        testng.setTestClasses(new Class[] { autotestClass });
        testng.setTestNames(Arrays.asList(testcase));
        testng.addListener(tla);

        testng.run();
        tla.getPassedTests();
        List<ITestResult> failedTestsResults = tla.getFailedTests();
        List<ITestResult> successTestsResults = tla.getPassedTests();

        final int failureCount = failedTestsResults.size();

        if (failureCount == 0) {
            System.out
                    .println(String.format("Test case %s passed", testcase));
            rc = 0;
        } else {
            System.out
                    .println(String.format("Test case %s failed", testcase));
            rc = -1;
        }

        System.exit(rc);
    }
}