当前位置: 首页 > news >正文

南通市网站建设_网站建设公司_UX设计_seo优化

外贸假发网站,简单的html模板,游戏充值代理平台,网站数据库 数据库空间购买租用TimeMeasureUtil#xff1a;做单次时间测量。 1、为了能确保 startTime 和 endTime 都正确设置#xff0c;因而采用实例对象来实现。每次测量是都能判断对象是否处在正确状态。 2、该类为工具类#xff0c;即使测试时产生许多对象实例也对软件无任何影响。 public class T…TimeMeasureUtil做单次时间测量。 1、为了能确保 startTime 和 endTime 都正确设置因而采用实例对象来实现。每次测量是都能判断对象是否处在正确状态。 2、该类为工具类即使测试时产生许多对象实例也对软件无任何影响。 public class TimeMeasureUtil {private long startTime 0;private long endTime 0;private TimeMeasureUtil(){}public static TimeMeasureUtil newInstance(){return new TimeMeasureUtil();}public void start(){startTime System.currentTimeMillis();}public void end(){endTime System.currentTimeMillis();}public long measure(){// Invalid: Before yif( startTime 0 ){throw new IllegalStateException( Must call metod start() first, when call method measure(). );}if( endTime 0 ){throw new IllegalStateException( Must call metod end() first, when call method measure(). );}if( startTime endTime ){throw new IllegalStateException( Must call metod start() first, when call method end(). );}return endTime - startTime;}} 使用示例 Testpublic void testMeasure_ok() {TimeMeasureUtil timeUtil TimeMeasureUtil.newInstance();timeUtil.start();// 下面这段代码用实际待测方法代替try {Thread.sleep( 1000 );} catch (InterruptedException e) {e.printStackTrace();}timeUtil.end();assertEquals( 1000, timeUtil.measure() );} 由于单次测量可能的偏差太大没有统计意义如下类测量平均时间TimeMeasureProxy1、默认运行20次得平均 2、给定运行次数的平均 缺陷 1、由于是用反射实现参数是通过 Object[ ] 来传递。有原始类型如byteintchar...参数的方法不能测试只能用 TimeMeasureUtil 来实现测试。  2、如果第一次执行方法后改变了某属性而该属性改变后又会影响下一次方法的执行可能会有不同的时间这样的方法不能测试。可能的改进方式先“克隆” count 个该对象然后用这样相同属性的对象来执行方法每个对象执行一次方法。因为这样要求被测试类提供“克隆”方法“因测试而影响逻辑”不可取所以没有实现。 import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class TimeMeasureProxy {// default measure countprivate int count 20;private TimeMeasureProxy(){}private TimeMeasureProxy( int count ){this.count count;}public static TimeMeasureProxy newInstance(){return new TimeMeasureProxy();}public static TimeMeasureProxy newInstance( int count ){return new TimeMeasureProxy( count );}public long avgTime( Object owner, String methodName, Object[] args ){// valid parameters.if( owner null ){throw new IllegalStateException(owner cant be null.);}if( methodName null ){throw new IllegalStateException(methodName cant be null.);}Class? ownerClass owner.getClass();Class?[] argsClass null;if( args ! null ){argsClass new Class[ args.length ];for( int i0 ; iargs.length ; i ){argsClass[i] args[i].getClass();}}Method method;try {method ownerClass.getMethod( methodName, argsClass );} catch (SecurityException e) {throw new RuntimeException( e );} catch (NoSuchMethodException e) {throw new RuntimeException( e );}return totalTime( owner, method, args)/count;}long totalTime( Object owner, Method method, Object[] args ){long totalTime 0;try {for( int i0; icount ; i ){TimeMeasureUtil timeUtil TimeMeasureUtil.newInstance();timeUtil.start();method.invoke( owner, args );timeUtil.end();totalTime timeUtil.measure();}} catch (IllegalArgumentException e) {throw new RuntimeException( e );} catch (IllegalAccessException e) {throw new RuntimeException( e );} catch (InvocationTargetException e) {throw new RuntimeException( e );}return totalTime;}} 使用示例 1、待测试的类 class ForMeasureAvgTime{public void justForTest(){try {Thread.sleep( 335 );} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void justForTestWithParams( Integer age, String name ){try {Thread.sleep( 558 );} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} } 2、通过TimeMeasureProxy 来测试 Test//测量无参数方法默认次数20public void testAvgTime_defaultCount() {ForMeasureAvgTime forMeasure new ForMeasureAvgTime();TimeMeasureProxy proxy TimeMeasureProxy.newInstance();long avgTime proxy.avgTime( forMeasure, justForTest, null );System.out.println( avgTime avgTime );assertTrue( (avgTime - 335) 5 || (335 - avgTime) 5);}Test//测量有参数方法给定次数10public void testAvgTime_giveCount() {ForMeasureAvgTime forMeasure new ForMeasureAvgTime();TimeMeasureProxy proxy TimeMeasureProxy.newInstance( 10 );long avgTime proxy.avgTime( forMeasure, justForTestWithParams, new Object[]{24, GongQiang} );System.out.println( avgTime avgTime );assertTrue( (avgTime - 558) 5 || (558 - avgTime) 5);}
http://www.lebaoying.cn/news/108228.html

相关文章:

  • 淘宝网站开发的意义如何做网站授权网址
  • 网络营销网站设计网上建立网站赚钱
  • 网站不备案可以做淘宝联盟吗中国机械外协加工网
  • 小说网站制作开源效能建设网站
  • 网站联盟漳州专业网站建设费用
  • 网站结构建设方案深圳商业网站建设模板
  • 化妆品 东莞网站建设互联网网页设计流程
  • 电商网站开发平台长春专业网站建设推广费用
  • 江干区住房和城市建设局网站wordpress做登陆页面模板
  • 深圳品牌创意网站建设房产怎么创建网站
  • wordpress放视频播放器新区快速seo排名
  • 做网站需要哪些东西和步骤asp.net网站
  • 百度有网站建设吗腾讯搜索引擎入口
  • 网站域名备案在哪里赛事竞猜网站开发
  • 从哪些方面建设网站网站空间服务商查询
  • 水富县建设局网站网站建设刂搜金手指下拉贰肆
  • 室内设计培训班哪家好湛江做网站seo的
  • 深圳市盐田区住房和建设局网站个人备案的网站 做企业站
  • 黑人做爰视频免费网站衡水企业网站制作
  • 做的网站如何放在电脑上培训心得体会1500字
  • 山西建站推广公司做免费网站
  • 免费装潢设计网站flash源码模版php生成html免费下载综合性型门户网站有哪些
  • 视频网站开发价格小型网站建设
  • 自己做网站都要什么手续杭州电子商务网站建设公司
  • 个人网站怎么命名网站代码模板编写
  • 仿网站网站安全设置教程
  • 广州市建设工程安全监督站网站论坛企业推广
  • 网站正在建设中 英文企业如何申请网站
  • 网站中加入地图导航如何制作微信答题小程序
  • 收企业做网站备案厦网站建设培训学校