1

我有一个 testNG 框架,我被要求通过命令行使其可运行。我已经添加了执行测试的代码,但是命令行执行的一部分是传入要执行的测试类。Java 似乎不喜欢这样。

我的代码:

    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();

    try
    {
        Class cl = Class.forName(myClass);
        testng.setTestClasses(new Class[] { cl.class });
        testng.addListener(tla);
        testng.run();
    }
    catch (Exception ex)
    {
    ...
    }

变量 myClass 是传递给 Main 的参数之一。

我收到关于“未知类”的“cl.class”代码的错误。

这样做的正确方法是什么?

编辑:

实际构建项目时,返回的错误是“error: cannot find symbol class cl”。

4

2 回答 2

5

问题可能是您将 cl.class 放入 Class 数组中。cl 是一个类对象。尝试

testng.setTestClasses(new Class[] { cl });

您可以在此处阅读有关 Class 类的更多信息http://docs.oracle.com/javase/tutorial/reflect/class/classNew.html

于 2012-10-19T14:50:34.850 回答
3

将您的行更改为:

testng.setTestClasses(new Class[] { cl });

语法是从硬编码X.class的类名中获取对象。Class在这种情况下,您已经拥有 Class 实例,所以只需使用它。

于 2012-10-19T14:51:34.740 回答