• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

用JUnit框架实现Java单元测试

发布: 2008-5-28 16:50 | 作者: 网络转载 | 来源: 网络转载 | 查看: 213次 | 进入领测软件测试网论坛讨论

领测软件测试网 软件测试技术门户\@b!pa3e7Y2}ta.GRcg

软件测试技术门户? u5v7[)]j

 2. Command (命令)对象行为模式,其实质就是将动作封装为一个对象,而不关心动作的接收者。这样动作的接收者可以一直到动作具体执行时才需确定。接口Test就是一个Command集,使得不同类的不同测试方法可以通过同一种接口Test构造其框架结构。这样对测试的集成带来了很多方便。
8L Z1bW2Xap  JUnit的Exception的抛出机制 软件测试技术门户*C yyc_
  JUnit的异常层次分为三层:1.Failure,客户预知的测试失败,可以被Assert方法检测到;2. Error,客户测试的意外造成的;3.Systemerror, JUnit的线程死亡级异常,这种情况一般很少发生。JUnit的这三种异常在TestResult类的RunProtected()方法得到很好体现。这里用Protectable接口封装了Test的执行方法,其实p.protect执行的就是test.runBare()。 软件测试技术门户:@+[4A'aL7P
  软件测试技术门户\P;H(p8[Q\2f
  public void runProtected(final Test test, Protectable p)
s:}#s+\E#\sT  {软件测试技术门户M&tQ)C:A;m {3v7hu
   try {p.protect();}
8JpV!VZ   catch (AssertionFailedError e) 软件测试技术门户*s(FG c3KkV{{{l
   {addFailure(test, e);}
j9M!I q!b K   catch (ThreadDeath e) 软件测试技术门户0Vm/mK-?Zj&ct1S
   {rethrow e;}软件测试技术门户TnMJV
   catch (Throwable e)
7QG7t QD]   {addError(test, e);}软件测试技术门户DBZ ~Wvh9H fZl
  }
^6kP-pp K\ }  代码首先检查是否是Assertion FailedError,然后判断是否是严重的ThreadDeath。这种异常必须Rethrow,才能保证线程真正的死亡,如果不是,说明它是一种意外。 软件测试技术门户*|FM"` H9Y