一键跑完工程中所有单元测试的方法
研究了一下午,费话少说,直接上代码,依赖commons-io,有兴趣的朋友自己深究:
?
?
package com.carver;import java.io.File;import java.util.ArrayList;import java.util.Collection;import java.util.List;import org.apache.commons.io.FileUtils;import org.apache.commons.io.filefilter.IOFileFilter;import org.apache.commons.io.filefilter.TrueFileFilter;import org.junit.runner.RunWith;import org.junit.runners.Suite;import org.junit.runners.model.InitializationError;@RunWith(TestAll.class)public class TestAll extends Suite {public TestAll(Class<?> setupClass) throws InitializationError {super(setupClass, findAllTestClasses());}private static Class<?>[] findAllTestClasses() {File srcDir = new File(TestAll.class.getResource("/").getFile());Collection<File> files = FileUtils.listFiles(srcDir, new IOFileFilter() {public boolean accept(File file) {return file.getName().endsWith("Test.class");}public boolean accept(File dir, String name) {return true;}}, TrueFileFilter.INSTANCE);List<Class<?>> classList = new ArrayList<Class<?>>();for (File file : files) {String className = file.getAbsolutePath().replace(srcDir.getAbsolutePath() + File.separator, "");className = className.replace(File.separator, ".");className = className.replace(".class", "");try {classList.add(Class.forName(className));} catch (Exception e) {e.printStackTrace();}}return classList.toArray(new Class<?>[0]);}}?
用Eclipse打开TestAll类,按Ctrl+F11,所有单元测试(不管是采用Annotation还是继承TestCase)一起来。。。