`
carver
  • 浏览: 49302 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一键跑完工程中所有单元测试的方法

    博客分类:
  • Java
阅读更多

研究了一下午,费话少说,直接上代码,依赖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)一起来。。。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics