zoukankan      html  css  js  c++  java
  • Java从零开始学四十六(Junit)

    一、软件测试

    软件开发:

    项目调研--需求分析--软件设计--程序编码--软件测试--运行维护

    软件测试:利用测试工具按照测试方案和流程对产品进行功能和性能测试,使用人工或者自动手段来运行或测试某个系统的过程。目的在于检验是否满足规定的需求,确认预期结果与实际结果之间的差别。

    墨盒测试-白盒测试-回归测试-单元测试

    二、JUnit-单元测试工具

    三、测试Junit测试类

    创建被测试类

    package com.pb.junit;
    /**
     *1.创建被测试类
     *2.Junit 3.0或者4.0 这里有3.0
     *3.创建测试类
     *简单实现加,减,乖,除的计算器
     */
    public class Calculator {
    
        //运算结果
        private static int result;
        
        //加法
        public void add(int n){
            result+=n;
        }
        //减法
            public void minus(int n){
                result-=n;
            }
            //乖法
            public void mult(int n){
                //result*=n;
            }
            //除法
            public void div(int n){
                if(n==0){
                    System.out.println("除数不能为0!");
                }else{
                    result/=n;
                }
            }
            //开方 :死循环
            public void sqr(){
                for(;;){
                    
                }
            }
            
            //平方
            public void square(int n){
                result=n*n;
                
            }
            //清零运算结果
            public void clear(){
                result=0;
            }
            
            
            public  int getResult() {
                return result;
            }
            public  void setResult(int result) {
                Calculator.result = result;
            }
            
    
    }

    使用JUnit3测试

    package com.pb.junit;
    
    import junit.framework.Assert;
    import junit.framework.TestCase;
    
    public class CalculatorTest extends TestCase {
        //创建测试类对象
        Calculator calculator=new Calculator();
        //测试启动前运行的方法
        protected void setUp() throws Exception {
            super.setUp();
            calculator.clear();
            System.out.println("测试前");
        }
        //测试结束后运行的方法
        protected void tearDown() throws Exception {
            super.tearDown();
            System.out.println("测试后");
        }
        //JUnit3中测试方法必须以test开头
        public void testAdd() {
            calculator.add(2);
            calculator.add(3);  //2+3结果为5
            
            int result=calculator.getResult();
            Assert.assertEquals(5, result);
        }
    
        public void testMinus() {
            calculator.minus(1);
            calculator.minus(5);//期望结果为-6
            int result=calculator.getResult();
            Assert.assertEquals(-6, result);
        }
    
        public void testMult() {
            calculator.mult(3);
            calculator.mult(4);
            int result=calculator.getResult();
            Assert.assertEquals(12, result);
        }
    
        public void testDiv() {
            calculator.div(8);
            calculator.div(0);
            int result=calculator.getResult();
            Assert.assertEquals(4 ,result);
        }
        
    }

    使用JUnit4

     

    package com.pb.junit;
    
    import static org.junit.Assert.*;
    
    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Ignore;
    import org.junit.Test;
    
    public class CalculatorTest {
        Calculator calculator=new Calculator();
    
        @BeforeClass
        public static void setUpBeforeClass() throws Exception {
            System.out.println("============所有测试之前执行一次");
        }
    
        @AfterClass
        public static void tearDownAfterClass() throws Exception {
            System.out.println("所有测试之后执行一次==========");
        }
    
        @Before
        public void setUp() throws Exception {
            System.out.println("==========每个测试之前执行一次");
            calculator.clear();
        }
    
        @After
        public void tearDown() throws Exception {
            System.out.println("每个测试之后执行一次=============");
        }
        //@Test 是必须的,测试方法可以不用以test开头,必须为public ,没有返回必须为void
        @Test
        public void testAdd() {
            calculator.add(3);
            calculator.add(2);
            int result = calculator.getResult();
            assertEquals(5, result);
        }
        //忽略这个测试方法
        @Ignore
        @Test
        public void testMinus() {
            fail("Not yet implemented");
        }
        
        
        @Test
        public void testMult() {
            fail("Not yet implemented");
        }
        //抛出预定义的异常
        @Test(expected=ArithmeticException.class)
        public void testDiv() throws ArithmeticException {
            calculator.add(8);
            calculator.div(0);
            int result=calculator.getResult();
            assertEquals(0, result);
        }
    
        @Test(timeout=5000) //超过5秒,算测试失败
        public void testSqr() {
            calculator.sqr();
            fail("Not yet implemented");
        }
    
        @Test
        public void testSquare() {
            fail("Not yet implemented");
        }
    
    }

    测试套件

    package com.pb.junit;
    
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses({
        //测试用例类的名称
        Calculator1Test.class,
        Calculator2Test.class,
        CalculatorTest.class
        
    })
    public class TotalTest {
    
        
        
    }
  • 相关阅读:
    上周热点回顾(12.10-12.16)团队
    上周热点回顾(12.3-12.9)团队
    上周热点回顾(11.26-12.2)团队
    上周热点回顾(11.19-11.25)团队
    上周热点回顾(11.12-11.18)团队
    【故障公告】SendCloud 邮件发送服务故障造成大量 QQ 邮箱收不到邮件团队
    上周热点回顾(11.5-11.11)团队
    上周热点回顾(10.29-11.4)团队
    SPSS学习系列之SPSS Modeler的帮助文档怎么调出来使用?
    SPSS学习系列之SPSS Text Analytics是什么?
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4439904.html
Copyright © 2011-2022 走看看