0

私は次のコードを持っています。これは、私が指摘したTestSuiteSampleであるクラスのロードで機能します。TestSuiteSampleは、注釈付きの標準のJUnit4TestSuiteです。通常のJavaプロジェクトとして実行すると、「true」と出力されますが、eclipse rcpで実行すると、「false」と出力されます。なぜ何かアイデアはありますか?

File testSuiteDir = new File("D:/TestDir/");
URL classUrl; 
classUrl = testSuiteDir.toURI().toURL(); 
URL[] classUrls = { classUrl }; 
URLClassLoader ucl = new URLClassLoader(classUrls); 
Class<?> cls = ucl.loadClass("TestSuiteSample"); 

if (cls.isAnnotationPresent(SuiteClasses.class)) { 
     System.out.println("true"); 
} else {
     System.out.println("false"); 

}

clsの注釈をチェックするためにこれを試しましたが、それでも0の注釈を返します。

Annotation[] annotations = new TestClass(clazz).getAnnotations();
for (Annotation annotation : annotations) {
    System.out.println(annotation.annotationType().getName());
}
4

1 に答える 1

0

問題は、クラスが、テストしているクラスをロードするために使用しているものSuiteClassesとは無関係のClassLoaderものから来ていることです。バンドルまたはスレッドコンテキストURLClassLoaderの親を作成すると、同じクラスに解決されるはずです。URLClassLoaderClassLoader

于 2012-07-18T07:28:43.157 に答える