zoukankan      html  css  js  c++  java
  • (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));
    		}
    	   // 下面是添加你设计的测试用例
           // *****
    	
    	}
    
    
  • 相关阅读:
    杂项
    导出查询数据(大数据量)
    设置现有字段自增
    C++ 矩形交集和并集的面积-离散化
    Python使用flask架构、跨域
    匈牙利命名法
    C++ main函数
    windows编译boost
    mfc HackerTools监控键盘按键
    mfc HackerTools远程线程注入
  • 原文地址:https://www.cnblogs.com/juking/p/5475444.html
Copyright © 2011-2022 走看看