2

すべてのテストクラスを自動的に実行するには、専用ディレクトリ内のすべてのクラスファイルを検索し、パスをパッケージ名に変換して、このクラスが指定されたインターフェイスを実装しているかどうかを確認します。

try {
    Class<? > myTestClass = Class.forName( constructedClassName );
    if( myTestClass.isInstance( MyTestInterface.class ) ) {
        testCollection.add( myTestClass );
    }
}
catch( Error e ) {
    // ignore, no valid test class
}

今日、私はこのテクニックを使用して醜いバグに遭遇しました(このSOの質問を参照)。

質問:

興味のないクラスで発生する可能性のあるエラーを無視せずに、すべてのテストクラスを収集するにはどうすればよいですか?

4

2 に答える 2

1

興味のないクラスで発生する可能性のあるエラーを無視せずに、すべてのテストクラスを収集するにはどうすればよいですか?

あなたはここの隅に自分自身を描いたようなものです...

私がすることは、次の1つ(または複数)です。

  • 問題のあるクラスを修正して、ロードされるようにします

  • クラスを別のディレクトリに配置するか、名前のリストを作成するか、パターンマッチングを使用して、追加するクラスと追加したくないクラスを区別します。testCollection

そしてもちろんエラーをログに記録します!! たぶんどこか別の場所にログを記録しますが、そうすると、メインログに大きなメッセージを残して、詳細を探す場所を誰かに知らせます。

于 2010-02-05T23:05:08.700 に答える
1

ロードされないクラスは何が良いですか?最初に修正してみませんか?いつか修正する必要はありませんか?

于 2010-02-05T23:43:29.373 に答える