我不知道這是你在找什麼。獲取文件名後,請按照以下步驟操作。
Classfile.class.getMethods()
通過迭代方法陣列和檢查註記類
method.getAnnotation(Test.class)
正如其他人認爲它總是一個更好的做法不是俱樂部與企業代碼測試類。
我在這裏添加了完整的代碼片段。
公共類ClassFinder {
private static final char PKG_SEPARATOR = '.';
private static final char DIR_SEPARATOR = '/';
private static final String CLASS_FILE_SUFFIX = ".class";
private static final String BAD_PACKAGE_ERROR = "Unable to get resources from path '%s'. Are you sure the package '%s' exists?";
public static List<Class<?>> find(String scannedPackage) {
String scannedPath = scannedPackage.replace(PKG_SEPARATOR, DIR_SEPARATOR);
URL scannedUrl = Thread.currentThread().getContextClassLoader().getResource(scannedPath);
if (scannedUrl == null) {
throw new IllegalArgumentException(String.format(BAD_PACKAGE_ERROR, scannedPath, scannedPackage));
}
File scannedDir = new File(scannedUrl.getFile());
List<Class<?>> classes = new ArrayList<Class<?>>();
for (File file : scannedDir.listFiles()) {
classes.addAll(find(file, scannedPackage));
}
return classes;
}
private static List<Class<?>> find(File file, String scannedPackage) {
List<Class<?>> classes = new ArrayList<Class<?>>();
String resource = scannedPackage + PKG_SEPARATOR + file.getName();
if (file.isDirectory()) {
for (File child : file.listFiles()) {
classes.addAll(find(child, resource));
}
} else if (resource.endsWith(CLASS_FILE_SUFFIX)) {
int endIndex = resource.length() - CLASS_FILE_SUFFIX.length();
String className = resource.substring(0, endIndex);
try {
classes.add(Class.forName(className));
} catch (ClassNotFoundException ignore) {
}
}
return classes;
}
public static void main(String[] args) {
List<Class<?>> classes = ClassFinder.find("com.vijay.junitapp4");
Method[] methods = null;
for (Class<?> class1 : classes) {
methods = class1.getMethods();
Test test = null;
for (int j = 0; j < methods.length; j++) {
test = methods[j].getAnnotation(Test.class);
if(null != test){
System.out.println("we found a teat case");
break;
}
}
}
}
}
爲什麼不工作你的想法? – Idos
我不知道我沒有得到任何結果,即使我有幾個測試類,if語句是錯誤的或者條件不是最好的? (str.equals( 「@測試」)); –
*我不知道*很少是很好的答案。如果您希望爲您的問題得到有意義的答案,請提供[mcve](http://stackoverflow.com/help/mcve)。 – Idos