修改过的5.1测试与封装
1.第一阶段目标 - 把计算的功能封装成类。
2.设计测试用例:用白盒与黑盒测试设计技术,为计算核心设计测试用例。
3.在实验环境中(如MyEclipse集成开发环境+Junit测试框架)运行测试用例,分析测试结果,找出程序问题,给出改进前后的代码对照。
结对子:
201306114454 陈汝婷 http://home.cnblogs.com/u/chenruting/
201306114448 练丽云 http://i.cnblogs.com/EditPosts.aspx?opt=1
import java.text.DecimalFormat; import java.util.Scanner; public class Calculator { private static long x ; private static long y ; public double z ; private static String s; public static void main(String[] args) { String condition = ""; Calculator ys = new Calculator(); Core core = new Core(); do{ Scanner scanner = new Scanner(System.in); try{ System.out.print("请输入第一个数:"); x = scanner.nextLong(); System.out.print("请输入第二个数:"); y = scanner.nextLong(); System.out.print("请输入运算符:"); s = scanner.next(); core.calc(s,x,y); }catch(Exception e){ System.out.print("输入有错!"+e); } System.out.print("是否继续?(continue or finish):"); condition = scanner.next(); }while("continue".equals(condition)); } } import java.text.DecimalFormat; import java.util.Scanner; public class Core { static final int NUM_MAX_OPERATOR = 1; // 最多4 个运算符 static final int NUM_SCALE = 2; // 数值范围是 -1000 到 1000 static final int NUM_PRECISION = 3; // 精度是小数点后两位 public static int i=0; public long z; public double calc(String s) { double result = 0.0d; // 这个方法中我可以计算两个数的+ - * / return result; } public long add(long x,long y) { return x+y; } public long calc(String s, long x, long y) { Scanner scanner = new Scanner(System.in); if (s.equals("+")) { z=(x+y); System.out.println(z); } else if (s.equals("-")) { z=x-y; System.out.println(z); } else if (s.equals("*")) { z=x*y; System.out.println(z); } else if (s.equals("/")) { if (y != 0) { z=x/y; System.out.println(z); } else { i++; try{ z=x/y;} catch(Exception e){ if(i<3) { System.out.println("分母不能为零!"); System.out.print("请重新输入第二个数:"); y = scanner.nextLong(); calc(s,x,y); } else{ System.out.println(i); System.out.println(exit(i=3)); } } } } else { System.out.println("输入不符合要求!"); }return z; } public String geta(){ return String.valueOf(z); } private char[] exit(int j) { // TODO 自动生成的方法存根 return null; } } import static org.junit.Assert.*; import org.junit.Test; public class CoreTest { @SuppressWarnings("deprecation") @Test public void test() { Core core = new Core(); long d = core.calc("+",12589456L,25364563L); assertEquals(37954019, d); } @Test public void jianfatest() { Core core = new Core(); long d = core.calc("-",2,1); assertEquals(1, d); } @Test public void chengfatest() { Core core = new Core(); long d = core.calc("*",2,1); assertEquals(2, d); } @Test public void cftest() { Core core = new Core(); long d = core.calc("/",6,2); assertEquals(2, d); } }
运行结果:
测试类的测试:
:
减法测试:
乘法:
除法:
当除数为0的时候会有2次重新输入输入的机会
最后献上我们的照骗,敬请欣赏: