Я добавляю тестовые случаи в Test Suite следующим образом:Общие методы, которые можно построить обобщенный тип
for(String methodName : getPublicDeclaredMethods(TestA.class))
{
this.addTest((new TestA(methodName)));
}
for(String methodName : getPublicDeclaredMethods(TestB.class))
{
this.addTest((new TestB(methodName)));
}
Это равносильно тому, как это сделать:
this.addTest((new TestA("TEST_METHOD_1")));
this.addTest((new TestA("TEST_METHOD_2")));
this.addTest((new TestB("TEST_METHOD_1")));
this.addTest((new TestB("TEST_METHOD_3"))); // woops I forgot TEST_METHOD_2
я застрял эта странная тестовая платформа, где имена методов передаются в виде строк через конструкцию.
Мой код выше гарантирует, что я добавлю все тестовые случаи, определенные в определенном классе. Тем не менее, я хотел бы иметь метод, который выглядит примерно так: вместо
void <T> addTestCasesFromClass()
{
for(String methodName : getPublicDeclaredMethods(T.class))
{
this.addTest((new T(methodName)));
}
}
Но я не знаю, как это делается в Java. Возможно ли это? TestA и TestB получены из теста класса.
Am Я прав, говоря, что этот метод бросает IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException? – Baz
Звучит правильно, я оставил обработку исключений для краткости. Также я не знаю, как вы хотите обрабатывать исключения (если, например, 'clz' не предоставляет доступный конструктор, который принимает строку). – Stephan