すべてのテストクラスを自動的に実行するには、専用ディレクトリ内のすべてのクラスファイルを検索し、パスをパッケージ名に変換して、このクラスが指定されたインターフェイスを実装しているかどうかを確認します。
try {
Class<? > myTestClass = Class.forName( constructedClassName );
if( myTestClass.isInstance( MyTestInterface.class ) ) {
testCollection.add( myTestClass );
}
}
catch( Error e ) {
// ignore, no valid test class
}
今日、私はこのテクニックを使用して醜いバグに遭遇しました(このSOの質問を参照)。
質問:
興味のないクラスで発生する可能性のあるエラーを無視せずに、すべてのテストクラスを収集するにはどうすればよいですか?