您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
扩展JUnit测试并行程序
作者:网络转载 发布时间:[ 2016/6/16 16:25:39 ] 推荐标签:单元测试 软件测试工具

  如果我们在 Eclipse 中运行测试,那么测试完毕之后的 JUnit 视图如下所示:
  图 2. 并行测试的完成结果

  从上图可以看出,我们的并行测试用例通过了测试,并且它们在使用不同线程运行时都能正常的工作。而串行的测试方法 (doNothing) 的执行结果则完全和之前一样工作正常。也是说,串行和并行测试可以在一个测试类中同时出现。
  Annotation 详细说明
  表 1. 扩展的 annotation 说明

  扩展 JUnit 的过程说明
  归功于 JUnit 的灵活的内部架构,只要遵循 JUnit 的标准,我们能够轻松的扩展 JUnit 的功能。而且遵循标准还意味着我们的扩展能无缝的利用社区对 JUnit 的广泛支持。例如,我们没有编写任何 Eclipse 插件,但是我们的测试结果能自然的在 Eclipse 中通过精心设计的 GUI 进行展现。
  言归正传,我们扩展 JUnit 的过程主要由以下过程组成:
  生成 Annotation 的定义,包括:@Threaded, @InitFor, @Check, @ParallelSetting
  生成 TestClassRunner 的子类 Parallelized 并在其中实现运行自定义测试的逻辑
  生成 TestMethodRunner 的子类供 Parallelized 类使用
  在实现 ThreadedMethodRunner 时,我们开始在类 ThreadedMethodRunner 使用了 Thread 类的 setDefaultUncaughtExceptionHandler 来捕获异常。然后将异常封装到主线程。而目前的版本则利用了 Executor 来运行多线程测试。由于 JDK 中的 Future 已经提供了类似的能力,所以我们不需要再关心异常的正确传递问题了。 JUnit 能准确的打印出并行测试中产生的异常信息,这也意味着我们可以使用 JUnit 提供的 Assert 功能了。
  结论
  随着多核平台逐渐成为主流,开发人员不可避免地需要开发和测试并行应用。本文通过使用 Annotation 扩展 JUnit,使其可以更方便地支持“准备数据——多线程运行——检查结果”三阶段的并行测试模式,减少开发人员手工创建线程和同步的繁琐工作。并且可以使 JUnit 支持从子线程中捕获测试错误,正确地在 Eclipse 等 IDE 中显示测试结果。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd