您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
单元测试之用JUnitPerf测试多线程并发
作者:网络转载 发布时间:[ 2013/1/15 10:19:26 ] 推荐标签:

  编译、运行该测试方法,使用Run as Application,控制台可能输出如下结果,有2个Error:

  …..EE

  Time: 0.053

  There were 2 errors:

  1) CompareDateTime(com.loggingselenium.JUnitPerfTestDateUtil)java.lang.RuntimeException: 解析日期时间格式出错,期望的字符串格式为[yyyyMMdd HH:mm:ss]

  at com.loggingselenium.DateUtil.compareDateTime(DateUtil.java:18)
  at com.loggingselenium.JUnitPerfTestDateUtil.CompareDateTime(JUnitPerfTestDateUtil.java:22)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at com.clarkware.junitperf.TestFactory.run(TestFactory.java:83)
  at com.clarkware.junitperf.ThreadedTest$TestRunner.run(ThreadedTest.java:75)
  at java.lang.Thread.run(Unknown Source)

  2) CompareDateTime(com.loggingselenium.JUnitPerfTestDateUtil)java.lang.RuntimeException: 解析日期时间格式出错,期望的字符串格式为[yyyyMMdd HH:mm:ss]

  at com.loggingselenium.DateUtil.compareDateTime(DateUtil.java:18)
  at com.loggingselenium.JUnitPerfTestDateUtil.CompareDateTime(JUnitPerfTestDateUtil.java:22)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at com.clarkware.junitperf.TestFactory.run(TestFactory.java:83)
  at com.clarkware.junitperf.ThreadedTest$TestRunner.run(ThreadedTest.java:75)
  at java.lang.Thread.run(Unknown Source)

  FAILURES!!!

  Tests run: 5, Failures: 0, Errors: 2

  多线程并发测试失败,我们的比较日期时间大小的方法存在线程不安全的问题,我们需要在DateUtil中方法前加上线程同步关键字synchronized:


public synchronized static int compareDateTime(String dateTime1, String dateTime2) {......}


  再次运行单元测试方法,可以发现多线程并发下存在的问题得到了解决。

  本文转自:http://www.cr173.com/html/18903_1.html

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