(2016春) 作业8:单元测试练习(个人练习)

单元测试练习

0. 时间要求

  • 截止日期:2016-5-17

1. 目的

  • 单元测试训练 (Junit框架应用)

  • 测试用例的设计方法

2. 要求

  • [必做题1] 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例,写到博客中。(10分)
测试用例
序号 测试输入:三条边(a,b,c) 测试预言(Oracle:直角、等腰、等边三角形)
1 输入(1,1,1) 等边三角形
2 输入(****) ***

Ps:设计测试用例时,注意不要遗漏、也要避免冗余.

  • [必做题2] 模仿附录2给出的三角形判断Junit测试代码,设计单元测试脚本,测试 [必做题1]设计得到的测试用例。注意测试脚本中测试用例出现顺序与[必做题1]表格所列顺序一致。运行所得的测试脚本,截运行结果图,写到博客中,同时将源代码commit到你自己的github。(20分)

  • [必做题3] 心得体会。写下本次练习你收获的知识点(PS:测试用例设计方法和步骤;测试脚本设计步骤或主要内容)。(10分)

附录

附录1: 三角形类别判断程序


    public class Triangle {
    // 定义三角形的三边
    
    protected long lborderA = 0;

    protected long lborderB = 0;

    protected long lborderC = 0;

    // 构造函数
    public Triangle(long lborderA, long lborderB, long lborderC) {

    this.lborderA = lborderA;

    this.lborderB = lborderB;

    this.lborderC = lborderC;

    }

    /**
      * 判断是否是三角形
      * 
      * 是返回true;不是返回false
     */
    public boolean isTriangle(Triangle triangle) {
       boolean isTriangle = false;

       // 判断边界,大于0 小于或等于Long.MAX_VALUE,出界返回false
       if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
            && (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
            && (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {

        // 判断两边之差小于第三边
        if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
                && diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
                && diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
            isTriangle = true;
          }

        }
        return isTriangle;
    }

    /**
     * 判断三角形类型
     * 
     * 只有两条边相等的三角形返回字符串“等腰三角形”; 三边均相等的三角形返回字符串“等边三角形”; 三边均不等的三角形返回字符串“不等边三角形”;
     */
    public String getType(Triangle triangle) {
        String strType = "Illegal";

       // 判断是否是三角形
       if (isTriangle(triangle)) {
          // 判断是否是等边三角形
          if (triangle.lborderA == triangle.lborderB
                && triangle.lborderB == triangle.lborderC) {
               strType = "Regular";
           }
          // 判断是否是不等边三角形
          else if ((triangle.lborderA != triangle.lborderB)
                && (triangle.lborderB != triangle.lborderC)
                && (triangle.lborderA != triangle.lborderC)) {
                strType = "Scalene";
          }
          // 三角形既非三边全部相等,又非全部不等,只能是部分相等即等腰三角形
          else {
               strType = "Isoceles";
              }
        }

       return strType;
    }

    /**
       * 计算两边之差的绝对值
      * 
     * */
    public long diffOfBorders(long a, long b) {
    	return (a > b) ? (a - b) : (b - a);
	}

	/**
 	* 用于获取三角形的边长
 	*/
	public long[] getBorders() {
 	    long[] borders = new long[3];
	    borders[0] = this.lborderA;
 	 	borders[1] = this.lborderB;
   		borders[2] = this.lborderC;
  	    return borders;
	}
	}

附录 2:三角形类别判断的单元测试脚本示例:

	import static org.junit.Assert.*;

	import org.junit.Test;

	public class TestTriangle{

		@Test
		public void testIsTriangle1(){
			Triangle t = new Triangle(-1,10,2);
			assertFalse(t.isTriangle(t));
		}
	
		@Test
		public void testIsTriangle2(){
			// according to the mutant, this test case should fail
			Triangle t = new Triangle(3,2,1);
			assertFalse(t.isTriangle(t));
		}
	
		@Test
		public void testIsTriangle3(){
			Triangle t = new Triangle(3,1,2);
			assertFalse(t.isTriangle(t));
		}
	   // 下面是添加你设计的测试用例
       // *****
	
	}

posted on 2016-05-09 21:07  小林觉  阅读(880)  评论(0编辑  收藏  举报

导航