实现一个简单的计算

注:目标类和测试类要放在同一包下, JUnit单元测试基础要点

目标类:Calculator.java

  1. package com.junit3_8;
  2. public class Calculator {
  3. //加
  4. public int add(int a, int b)
  5. {
  6. return a + b ;
  7. }
  8. //减
  9. public int subtract(int a, int b)
  10. {
  11. return a - b ;
  12. }
  13. //乘
  14. public int multiply(int a, int b)
  15. {
  16. return a * b ;
  17. }
  18. //除
  19. public int divide(int a, int b)throws Exception
  20. {
  21. if (0 == b)
  22. {
  23. throw new Exception("除数不能为0");
  24. }
  25. return a / b ;
  26. }
  27. }

测试类: CalculatorTest.java

  1. package com.junit3_8;
  2. import junit.framework.Assert;
  3. import junit.framework.TestCase;
  4. //测试类要继承TestCase
  5. public class CalculatorTest extends TestCase{
  6. Calculator cal;
  7. //在“每个”测试方法执行之前被调用
  8. public void setUp()
  9. {
  10. //这段代码在这写比较方便,只写一次就够,
  11. //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用
  12. cal = new Calculator();
  13. //System.out.println("setUp");
  14. }
  15. //在“每个”测试方法执行之后被调用
  16. public void tearDown()
  17. {
  18. //System.out.println("testDown");
  19. }
  20. //测试方法:方法名要以test为开头,无参数,无返回类型
  21. public void testAdd()
  22. {
  23. //Calculator cal = new Calculator();
  24. int result = cal.add(1, 2);
  25. //第一个参数是预期的,第二个参数是真实的
  26. Assert.assertEquals(3, result);
  27. }
  28. public void testSubtract()
  29. {
  30. //Calculator cal = new Calculator();
  31. int result = cal.subtract(1, 2);
  32. //第一个参数是预期的,第二个参数是真实的
  33. Assert.assertEquals(-1, result);
  34. }
  35. public void testMultiply()
  36. {
  37. //Calculator cal = new Calculator();
  38. int result = cal.multiply(1, 2);
  39. //第一个参数是预期的,第二个参数是真实的
  40. Assert.assertEquals(2, result);
  41. }
  42. public void testDivide()
  43. {
  44. int result = 0;
  45. //Calculator cal = new Calculator();
  46. try
  47. {
  48. result = cal.divide(4, 2);
  49. }
  50. catch(Exception e)
  51. {
  52. e.printStackTrace();
  53. //让测试失败
  54. Assert.fail();
  55. }
  56. //第一个参数是预期的,第二个参数是真实的
  57. Assert.assertEquals(2, result);
  58. }
  59. //除数为0的情况
  60. public void testDivideByZero()
  61. {
  62. Throwable th = null ;
  63. //Calculator cal = new Calculator();
  64. try
  65. {
  66. cal.divide(1, 0);
  67. Assert.fail();
  68. }
  69. catch(Exception e)
  70. {
  71. th = e ;
  72. //e.printStackTrace();
  73. }
  74. //th 不为空 null
  75. Assert.assertNotNull(th);
  76. //第一个参数是预期的,第二个参数是真实的
  77. Assert.assertEquals(Exception.class, th.getClass());
  78. Assert.assertEquals("除数不能为0", th.getMessage());
  79. }
  80. //加了这个main方法,可以直接以 Java Application 方式运行 ,也可以以 JUnit Test 运行
  81. public static void main(String[] args)
  82. {
  83. //命令行形式打印
  84. junit.textui.TestRunner.run(CalculatorTest.class);
  85. //awt 界面方式显示
  86. //junit.awtui.TestRunner.run(CalculatorTest.class);
  87. //swing 界面方式显示
  88. //junit.swingui.TestRunner.run(CalculatorTest.class);
  89. }
  90. }

1.调用 Assert.fail() 是让测试失败,该方法一般放在你认为不会到达的地方

2.这段代码让整个程序简便了许多  Calculator cal;    //在“每个”测试方法执行之前被调用  public void setUp()  {   //这段代码在这写比较方便,只写一次就够,   //不用在每个方法里写,因为这个方法每次都被调用,生成不同的对象,供测试方法使用   cal = new Calculator();  }

最新文章

  1. 在传统.NET Framework 上运行ASP.NET Core项目
  2. 极路由2(极贰)ROOT并刷了OpenWrt
  3. Office 365 Licence使用情况统计
  4. Swift----方法 、 下标 、 继承 、 初始化 、 析构方法 、 可选链
  5. 树莓派摄像头模块转成H264编码通过RTMP实现Html输出
  6. C2第九次解题报告
  7. ORA-28000: the account is locked-的解决办法
  8. ubuntu安装pip3
  9. 正常月报表年初未分配利润修改backup
  10. CSS 动画之九-会呼吸的信封
  11. Java克隆--深克隆与浅克隆的区别
  12. InitCommonControlsEx()
  13. DigitalOcean VPS简介
  14. LPC1788的IIC使用
  15. noip普及组2007 奖学金
  16. 【bzoj2151】种树
  17. Ollydbg中的内存断点和硬件断点的区别
  18. C++:钻石继承与虚继承
  19. Git -- 工作区 和 暂存区
  20. Lodash 中文文档 (v4.16.1) 手机版

热门文章

  1. 「SCOI2016」萌萌哒
  2. uoj22 【UR #1】外星人
  3. px,dp,sp以及像素密度
  4. nginx的重试机制以及nginx常用的超时配置说明
  5. hdu 3435 图回路分割
  6. JVM堆设置及调优
  7. matlab colormap
  8. Tomcat:基础安装和使用教程
  9. Facebook产品的开发流程
  10. BP反向传播算法的工作原理How the backpropagation algorithm works