修改过的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次重新输入输入的机会

最后献上我们的照骗,敬请欣赏:

posted @ 2015-04-30 11:18  48练丽云  阅读(165)  评论(2编辑  收藏  举报