是否可以在Class.forName中使用动态值?

时间:2012-10-19 14:44:15

标签: java dynamic testng

我有一个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”代码错误。

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

编辑:

实际构建项目时,返回的错误是“错误:找不到符号类cl”。

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

将您的行更改为:

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

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