发表于: 2018-03-26 22:33:12

1 512


白学java第十三天,今天学习时间比较短,但是浓缩就是精华,今天还是学点内容比较多的。

今天完成的事情:今天先对昨天的内容进行了巩固,全部重过了一遍,然后闭上眼睛回忆了一遍。然后进行了JUnit的学习。

JUnit和主方法测试相比有什么优点

1.实际进行开发时,我们会编写大量的函数,采用主方法测试需要编写大量的代码,而且还需要对测试的结果逐个检查,工作量非常大。使用Junit4进行测试可以一次进行多种测试,只要查看结果bar是不是绿色的就行。当bar为红色时,根据Failure Trace可以快速定位问题,方便修改。

2.进行单元测试可以减少后期维护成本。

注解有哪些、怎么使用的

常用的注解有:

@Test  表示测试方法

@Ignore  用于写好接口,实现类还没有完成的情况。执行单元测试时,会跳过这一方法

@Before  每一个@Test执行前都会执行一次的功能,例如获取数据库连接

@After  每一个@Test执行完毕后都会执行一次的功能,例如关闭数据库连接

了解测试类编写规范

1.命名规范 测试单元类名一般为"源文件类名+Test"

          测试方法名一般为"test+源文件方法名"

2.方法前要使用标注 在测试类中并不是每一个类都是用来调试的,要用标注来标明

3.测试方法返回类型为void

4.测试方法不带变量

代码:

package test;

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;

    }

}

测试类

package test;

import static org.junit.Assert.*;

import org.junit.Before;

import org.junit.Ignore;

import org.junit.Test;

public class CalculatorTest {

    private static Calculator calculator = new Calculator();

    

    @Before

    public void setUp() throws Exception {

        calculator.clear();

    }

    @Test

    public void testAdd() {

        calculator.add(2);

        calculator.add(3);

        assertEquals(5, calculator.getResult());

    }

    @Test

    public void testSubstract() {

        calculator.add(10);

        calculator.substract(2);

        assertEquals(8, calculator.getResult());

    }

    @Ignore("Multiply() Not yet implemented")

    @Test

    public void testMultiply() {

    }

    @Test

    public void testDivide() {

        calculator.add(8);

        calculator.divide(2);

        assertEquals(4, calculator.getResult());

    }

}

两个是成功一个失败一个无效。

package test1;

import static org.junit.Assert.assertEquals;

import org.junit.Before;

import org.junit.Test;

import test.Calculator;

public class Calculatortest { 

        private static Calculator calculator = new Calculator();

        @Before

        public void clearCalculator(){

            calculator.clear();

        }

        @Test

        public void square1() {

            calculator.square(2);

            assertEquals(4, calculator.getResult());

        }     

        @Test    

        public void square2(){

            calculator.square(0);

            assertEquals(0, calculator.getResult());

        }

        @Test    

        public void square3(){

            calculator.square(-3);

            assertEquals(9, calculator.getResult());

        }

     }

例二:

package test2;

/**

 * 被测试类,通过Junit对此类的方法进行单元测试

 */

public class Claculate1 {

    public int add(int a, int b) {

    return a + b;

    }

    public int subtract(int a, int b) {

    return a - b;

    }

    public int multiply(int a, int b) {

    return a * b;

    }

    public int divide(int a, int b) {

    return a / b;

    }

}

测试类

package test2;

import static org.junit.Assert.*;

import org.junit.Test;

/**

 * junit的测试方法必须使用@Test注解

 * 测试方法必须以public void修饰,并且不包含参数

 */

public class Claculate1Test {

    @Test

    public void testAdd() {

    /**

     * assertEquals这个方法是一个断言方法

     * 第一个参数表示预期的结果

     * 第二个参数表示程序的执行结果

     * 当预期结果与执行结果是一致的时候,则表示单元测试成功

     */

    assertEquals(4, new Claculate1().add(1, 3));

    }

   

    @Test

    public void testSubtract() {

    assertEquals(4, new Claculate1().subtract(9, 5));

    }

    

    @Test

    public void testMultiply() {

    assertEquals(6, new Claculate1().multiply(2, 3));

    }

    

    @Test(expected=ArithmeticException.class)

    public void testDivide() {

    assertEquals(3, new Claculate1().divide(9, 0));

    }

}


明天计划的事情:(继续复习巩固昨天的内容,完成jdbcTemplate,并加深理解,尝试自己写一个) 
遇到的问题:(这个单元测试是测试程序吗,测试代码对错还是什么,不是很能搞懂) 
收获:(通过今天的学习,今天认识并学到了JUnit,并做了巩固联系)





劳烦师兄批阅


返回列表 返回列表
评论

    分享到