⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classpathtestcollector.java

📁 JAVA 数学程序库 提供常规的数值计算程序包
💻 JAVA
字号:
package jmathlib.tools.junit.runner;

import java.util.*;
import java.io.*;

/**
 * An implementation of a TestCollector that consults the
 * class path. It considers all classes on the class path
 * excluding classes in JARs. It leaves it up to subclasses
 * to decide whether a class is a runnable Test.
 *
 * @see TestCollector
 */
public abstract class ClassPathTestCollector implements TestCollector {
	
	static final int SUFFIX_LENGTH= ".class".length();
	
	public ClassPathTestCollector() {
	}
	
	public Enumeration collectTests() {
		String classPath= System.getProperty("java.class.path");
		String separator= System.getProperty("path.separator");
		Hashtable result= new Hashtable(100);
		collectFilesInRoots(splitClassPath(classPath, separator), result);
		return result.elements();
	}
	
	void collectFilesInRoots(Vector roots, Hashtable result) {
		Enumeration e= roots.elements();
		while (e.hasMoreElements()) 
			gatherFiles(new File((String)e.nextElement()), "", result);
	}

	void gatherFiles(File classRoot, String classFileName, Hashtable result) {
		File thisRoot= new File(classRoot, classFileName);
		if (thisRoot.isFile()) {
			if (isTestClass(classFileName)) {
				String className= classNameFromFile(classFileName);
				result.put(className, className);
			}
			return;
		}		
		String[] contents= thisRoot.list();
		if (contents != null) { 
			for (int i= 0; i < contents.length; i++) 
				gatherFiles(classRoot, classFileName+File.separatorChar+contents[i], result);		
		}
	}
	
	Vector splitClassPath(String classPath, String separator) {
		Vector result= new Vector();
		StringTokenizer tokenizer= new StringTokenizer(classPath, separator);
		while (tokenizer.hasMoreTokens()) 
			result.addElement(tokenizer.nextToken());
		return result;
	}
	
	protected boolean isTestClass(String classFileName) {
		return 
			classFileName.endsWith(".class") && 
			classFileName.indexOf('$') < 0 &&
			classFileName.indexOf("Test") > 0;
	}
	
	protected String classNameFromFile(String classFileName) {
		// convert /a/b.class to a.b
		String s= classFileName.substring(0, classFileName.length()-SUFFIX_LENGTH);
		String s2= s.replace(File.separatorChar, '.');
		if (s2.startsWith("."))
			return s2.substring(1);
		return s2;
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -