zoukankan      html  css  js  c++  java
  • JUnit4学习

    参考:http://www.cnblogs.com/yangxia-test/p/3996120.html

    JUnit4是一个开源的java单元测试框架,我们只需要引入一个包,就可以使用它的功能

    先说说他的常见注解

    @Before(每个测试方法执行之前都要执行一次,比如有些数据需要重新赋值

    @After(每个测试方法执行后都执行一次,比如有些数据需要重新复制

    @BeforeClass(所有方法执行前执行

    @AfterClass(所有方法执行后执行

    @Test(timeout = xxx)看当前测试方法是否在一定时间内完成(比如看是否死循环

    @Test(expected=Exception.class)测试方法中是否有抛出了这个异常

    @Ignore(历史原因或者没有设置好,就先不测试这个方法,加载@Test上面,不代替@Test

    下面说说使用方法

    准备一个测试用的类(里面有错误的方法

    package andycpp;
    
    public class Calculator {
        private static int result; // 静态变量,用于存储运行结果
    
        public void add(int n) {
            result = result + n;
        }
    
        public void substract(int n) {
            result = result - 1; // Bug:正确的应该是result=result-n;
        }
    
        public void multiply(int n) {
            // 此方法尚未写好
        }
    
        public void divide(int n) {
            result = result / n;
        }
    
        public void square(int n) {
            result = n * n;
        }
    
        public void squareRoot(int n) {
            for (;;)
                ; // Bug:死循环
        }
    
        public void clear() {
            result = 0; // 将结果清零
        }
    
        public int getResult() {
            return result;
        }
    }

    导入JUnit4包

    右键项目——》构建路径——》add Library——》JUnit

    在相对应的java文件右键,new——》JUnit Test Case,编写各个方法

        private static Calculator calculator = new Calculator();
    
        @Before
        public void setUp() throws Exception {
            calculator.clear();
        }
    
        @After
        public void tearDown() throws Exception {
        }
    
        @Test(timeout = 1000)
        public void testAdd() {
            calculator.add(2);
            calculator.add(3);
        }
    
        @Test
        public void testSubstract() {
            calculator.add(10);
            calculator.substract(2);
            assertEquals(8, calculator.getResult());
        }
    
        @Ignore("Multiply() Not yet implemented")
        @Test
        public void testMultiply() {
        }
    
        @Test(expected = ArithmeticException.class)
        public void testDivide() {
            calculator.add(8);
            calculator.divide(0);
            assertEquals(4, calculator.getResult());
        }
    
        @Test(timeout = 1000)
        public void testSquareRoot() {
            calculator.squareRoot(1);
        }

    右键测试类,run as --》JUnit可以看到效果

    下面说带有多个参数一起解决

    0,类前面加注解@RunWith(Parameterized.class)

    1,设置参数

    2,@Parameters方法

    3,重写构造方法

    4,@Test方法

        private static Calculator calculator = new Calculator();
    
        private int param;
        private int result;
    
        @Before
        public void setUp() throws Exception {
        }
    
        @After
        public void tearDown() throws Exception {
        }
    
        @Parameters
        public static Collection data() {
            return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 } });
        }
    
        public SquareTest(int param, int result) {
            this.param = param;
            this.result = result;
        }
    
        @Test
        public void testSquare() {
            calculator.square(param);
            assertEquals(result, calculator.getResult());
            System.out.println("result=" + result);
        }

    效果图

     我们打包想一起测试的时候,写个类包他们两个整合起来

    代码内容

    @RunWith(Suite.class)
    @Suite.SuiteClasses({ CalculatorTest.class, SquareTest.class })
    public class All {
    }

  • 相关阅读:
    IIS安装和使用(Windows Server 2003)
    五险一金
    CKEditor与CKFinder的配置(ASP.NET环境)
    spring的@ConditionalOnMissingBean注解
    spring的@Primary注解
    java8实现接口需要重写接口中的default方法吗
    消息队列的作用
    ES快速入门,ElasticSearch 搜索引擎
    spring的@PostConstruct 和 @PreDestroy 注解
    Spring注解@Component、@Repository、@Service、@Controller区别
  • 原文地址:https://www.cnblogs.com/vhyc/p/6758375.html
Copyright © 2011-2022 走看看