关闭

使用Junit进行单元测试

发表于:2010-10-13 14:06

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

 作者:韩枫慧    来源:51testing 投稿

  好吧--我们来点真格的--将写一个正确'average()'方法。

public static double average (List l)
{
   Iterator iter = l.iterator();
   int sum = 0;
   while (iter.hasNext())
   {
     Integer num = (Integer) iter.next(); sum + = num.intValue();
   }
   return sum/l.size();
}

  而现在……

  java - CP junit.jar;. junit.textui.TestRunner org.dneary.math.test.MathOpsTest

  ..

  Time: 0,01

  OK (2 tests)

  哇哦!

  但是在相同的时间内,这不是一个好的测试。我们来尝试更难一些的:

public void test_average_multiple ()
{
   Vector nums = new Vector();
   nums.add(new Integer(3));
   nums.add(new Integer(6));
   assertTrue(MathOps.average(nums) == 4.5);
}

  然后我们返回测试……

  ava -cp junit.jar;. junit.textui.TestRunner org.dneary.math.test.MathOpsTest

  ... F

  Time: 0,01

  There was 1 failure:

  1)

  test_average_multiple(org.dneary.math.test.MathOpsTest)junit.framework.AssertionFailedError At

  org.dneary.math.test.MathOpsTest.test_average_multiple(MathOpsTest.java:26)

  FAILURES!!!

  Tests run: 3, Failures: 1, Errors: 0

  这次我们在看到有什么错多了点小麻烦。当然,我们可以在我们的测试中添加一个println()来检查发生了什么……

System.out.println ("Average: "+ MathOps.average(nums));

  出人意料的是,计算的平均值为4.0,。但是为什么???3+6等于9,9/2=…4同为整数。哦!我们修改我们的方法……

public static double average (List l)
{
   Iterator iter = l.iterator();
   double sum = 0;
   while (iter.hasNext())
   {
     Integer num = (Integer) iter.next();
     sum + = num.intValue();
   }
   return sum/l.size();
}

53/5<12345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号