2013-02-27 2 views
2

Тест Framework Я использую имеет довольно странный способ добавления тестов в Test Suite, следующим образом:листинга публичных методов классов без создания экземпляра

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.

ответ

1

Вы также можете сделать:

TestTypeOld.class.getMethods(); 

Оператор .class возвращает экземпляр класса, представляющий данный класс.

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()); 
    } 
} 
1

Как насчет использования

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

Тогда у вас не будет для создания экземпляра TestTypeOld.

0

Использование Reflection API Пример:

Methods[] methods = TestTypeOld.class.getMethods(); 
Смежные вопросы