我加入的測試用例來測試套件如下:泛型方法,可以構建泛型類型
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是從Test類派生的。
上午我說得對,這種方法拋出:IllegalArgumentException - ,拋出:SecurityException,InstantiationException,IllegalAccessException,的InvocationTargetException,NoSuchMethodException? – Baz 2013-02-27 13:11:27
聽起來沒錯,我出於簡潔的原因離開了異常處理。另外我不知道如何處理異常(如果'clz'沒有提供接受字符串的可訪問構造函數)。 – Stephan 2013-02-27 13:49:51