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

Reflection Apiの例を使用します:

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