单元测试套件类,遍历当前包下的所有单元测试类并运行

package test; import java.io.File;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite; /** * 单元测试套件类,获取当前包下的所有单元测试类并运行 *  * @author phrash *  */public class AllTests{ /** 包名 */ private static String pkgName = AllTests.class.getPackage().getName();  /** 测试套件 */ private static TestSuite suite = new TestSuite();  public static Test suite() {  // 将包名转化为路径,这里也可以具体指明是某个路径  String rPath = pkgName.replace('.', '/') + "/";   // 遍历文件夹下所有文件,并将java文件转化为Class  refreshFileList(rPath, pkgName);   return suite; }  /**  * 递归获取目录下的class  *   * @param strPath  * @param newPkgName  */ public static void refreshFileList(String strPath, String newPkgName) {  // 获取目录  File dir = new File(strPath);  // 获取目录下所有文件和目录  File[] files = dir.listFiles();   if (files == null)  {   return;  }  for (int i = 0; i < files.length; i++)  {   // 文件名   String fileName = files[i].getName();   // 递归   if (files[i].isDirectory())   {    refreshFileList(files[i].getAbsolutePath(), newPkgName + "."      + fileName);   }   // 判断是不是java文件   else if (-1 != fileName.lastIndexOf(".java"))   {    // 去掉文件名的文件类型后缀    String clsName = fileName.substring(0, fileName      .lastIndexOf("."));     clsName = newPkgName + "." + clsName;     try    {     // 临时Class     Class tempClass = Class.forName(clsName);     // 如果不是测试类则continue     if (!isTestCase(tempClass))     {      continue;     }     // 将得到的Class放入suite中     suite.addTestSuite(tempClass);    } catch (ClassNotFoundException e)    {     e.printStackTrace();    }   }  } }  /**  * 判断是不是测试类  *   * @param tempClass  * @return boolean  */ private static boolean isTestCase(Class tempClass) {  // 如果该类的父类是TestCase,则说明是测试类  if ((tempClass.getSuperclass()).equals(TestCase.class))  {   return true;  }  return false; }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值