利用反射模仿JUnit写一个自己的测试驱动类

发表于:2018-11-15 13:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:codingmyworld    来源:博客园

#
JUnit
分享:
  这几天为了学Hibernate的集合类型映射回头复习了一下JCF(Java Collection Framework),于是不可避免的写了很多小程序,比如下面这个TestMap类用来复习Map:
  package sample.map;
  import java.util.HashMap;
  import java.util.Map;
  /**
  *
  * @author CodingMyWorld
  */
  public class TestMap {
  //Map最常规的put与get
  private void test1() {
  Map map = new HashMap();
  map.put("1", "Monday");
  map.put("2", "Tuesday");
  map.put("3", "wednesday");
  map.put("4", "Thursday");
  System.out.println("size : " + map.size());
  System.out.println("map[\"2\"] : " + map.get("2"));
  }
  //Map中的键值不能重复
  private void test2() {
  Map map = new HashMap();
  map.put("1", "Mon.");
  map.put("1", "Monday");
  map.put("one", "Monday");
  System.out.println("size : " + map.size());
  System.out.println("map : " + map);
  }
  //遍历Map中的键值对
  private void test3() {
  Map map = new HashMap();
  map.put("1", "Monday");
  map.put("2", "Tuesday");
  map.put("3", "wednesday");
  map.put("4", "Thursday");
  for(Object key : map.keySet()) {
  System.out.println(key + " : " + map.get(key));
  }
  }
  // main方法。。。
  }
  上面的代码毫无亮点,相信大家平时也会经常写一些类似这样的小程序来温故知新。真正吸引我注意力的下面这段代码:
  public static void main(String[] args) {
  TestMap test = new TestMap();
  test.test1();
  System.out.println("=================================");
  test.test2();
  System.out.println("=================================");
  test.test3();
  }
  由于我写了很多这样的类,不可避免的我需要在每个类中的main方法都重复如上的代码。这样的代码写多了就让人恶心,一扫coding的乐趣。于是我突发奇想,既然我的目的只是运行每个小程序中的test方法查看输出,为什么不写一个驱动类来搞定呢?当然,我可以用JUnit来实现,但是既然要求如此简单明确,自己写一个又何妨,全当练手啦,顺便还能复习一下Reflection API。
  思路
  1. 利用一个Map保存要运行的测试用例类及其测试方法。
  2. 通过反射为每个测试用例类构造一个实例。
  3. 通过反射筛选出测试用例中的测试方法。测试方法需满足:1.方法名为testXxx 2.方法无参
  4. 调用每个测试方法,并做一些统计
  5. 适当的Exception Handling
  执行
  把反射搞懂之后再写这个程序就很Easy了,我直接贴上我的代码,欢迎各位在下面的评论中指正。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号