2

我正在使用的测试框架有一种很奇怪的方式将测试添加到测试套件中,如下所示:

public TestSuiteAll() {
    super("TestSuiteAll")

    this.addTest(new TestTypeOld("TEST_EXECUTION"));
    this.addTest(new TestTypeOld("TEST_COMPLETION_1"));
    this.addTest(new TestTypeOld("TEST_COMPLETION_2"));

    this.addTest(new TestTypeNew("TEST_NEW"));
}

例如,其中“TEST_EXECUTION”是要调用的 TestTypeOld 类中函数的名称。

我真的不喜欢这种设计,但我坚持下去。如何列出 TestTypeOld 中的所有函数以便添加所有函数?

我已经看到了一些这样的例子:

TestTypeOld testTypeOld = new TestTypeOld("");
Class testTypeOldClass = testTypeOld.getClass();
Method[] methods = testTypeOldClass.getMethods();

但这似乎真的很啰嗦。有没有另一种方法可以做到这一点,我不需要创建 TestTypeOld 的实例。

4

4 回答 4

2

你应该能够做到这一点:

Method[] methods = TestTypeOld.class.getMethods();

这是一个工作示例java.util.List

public static void main(String args[]) {
    Method[] methods = List.class.getMethods();
    for(Method method : methods) {
        System.out.println(method.getName());
    }
}
于 2013-02-27T08:51:41.853 回答
1

你也可以这样做:

TestTypeOld.class.getMethods();

.class运算符检索表示给定类的 Class 实例。

于 2013-02-27T08:51:23.103 回答
1

只是使用怎么样

Methods[] methods = TestTypeOld.class.getMethods();

然后您不必创建TestTypeOld.

于 2013-02-27T08:52:20.000 回答
0

使用反射 API 示例:

Methods[] methods = TestTypeOld.class.getMethods();
于 2013-02-27T09:10:30.450 回答