Java学习之JUnit

编写被测文件

package junit;

public class Calculate {
    public int add(int a, int b) {
        return a + b;
    }
    public int substract(int a, int b) {
        return a - b;
    }
    public int multiply(int a, int b) {
        return a * b;
    }
}

编写测试代码

package junit;

import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
 * Calculate 测试文件
 *
 */
public class CalculateTest {
    private Calculate calculate;
    /**
     * 在每个方法执行前执行
     * @throws Exception
     */
    @Before
    public void setUp() throws Exception {
         // 构建对象
         calculate=new Calculate();
    }
    /**
     * 在每个方法执行后执行
     * @throws Exception
     */
    @After
    public void tearDown() throws Exception {
    }
    /**
     * 测试规范点:
     * 1、测试方法必须使用@Test注解,并且方法必须是public void,不能带任何参数;
     * 2、测试单元中的每个方法必须可以独立,测试方法之间不能有任何的依赖;
     * 3、测试方法一般使用test作为方法名的前缀
     */
    @Test
    public void testAdd() {
         //调用所需要测试的函数
         //真实值
         int result=calculate.add(10, 20);
         //期望值
         int expect=30;
         //断言
         //此处 0 代表的是误差值,当expect与result相差的绝对值小于这个值时测试通过。但大于等于时会失败。
         assertEquals(expect, result, 0);
    }
    @Test
    public void testSubstract() {
         // 调用被测函数
         int result=calculate.substract(10, 5);
         // 断言
         assertEquals(5, result);
    }
    @Test
    public void testMultiply() {
         int result = calculate.multiply(2, 3);
         assertEquals(6, result);
    }
    @Test
    public void testDivide() {
         int result = calculate.divide(10, 3);
         assertEquals(3, result, 0);
    }
}

相关注解的说明

  1. @RunWith这个注解修饰的是测试类,作用在类上表示该测试类所使用的测试驱动。
  2. @Test 这个注解表明被修饰的方法是测试方法,在Junit中将会被自动执行,需要注意的是,测试方法只能是无返回值无参数的公共方法,即public void 。方法名可以任意取(建议是跟被测试方法同名),方法不能有入参。当然@Test 注解内还能传入一些参数,例如:@Test(expected = ArithmeticException.class) 就是预期被测试的方法会抛出ArithmeticException异常,可以理解为异常捕获。还可以传入超时时间,比如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。
  3. @BeforeClass 这个注解针对所有测试,在所有测试方法执行之前执行,且只执行一次,且必须是作用在public static void,即修饰静态方法。
  4. @AfterClass 这个注解针对所有的测试,将会在所有测试方法执行结束后执行一次,且必须作用到public static void。
  5. @Before 初始化方法,每个测试方法运行之前必须执行被@Before注解修饰的方法。
  6. @After 释放资源,在任何测试方法执行之后需要进行的收尾工作,在每个测试方案执行之后执行一次,该注解作用到public static void。
  7. @Ignore 忽略的测试方法,标注的含义就是"某些方法尚未完成,暂不参与此次测试",被@Ignore注解修饰的方法不会被执行。

断言
一个完整的单元测试有三个步骤:

准备(测试环境,准备测试数据)
执行(构造请求传入参数执行)
断言(验证结果)

前面介绍完了准备和执行两个步骤,下面就是介绍断言这个步骤了,Junit测试框架中Assert类就是实现断言的工具,Assert类中用于断言的方法有很多,下面介绍几个常用的断言方法。

  1. assertEquals(expected, actual)查看两个对象或者两个值是否相等,如果是对象的话就是使用equal()方法来比较。参数expected为用户期望的值,actual为被测试方法实际返回的值。如果这两个值相等的话, 则说明方法运行是正确的。
  2. assertNull()查看对象是否为空。
  3. assertSame(expected,actual)查看两个对象的引用是否相等,直接用==来进行比较的。比较两个对象的值是否相等。
  4. assertTrue(String message, boolean condition) 要求condition==true,查看运行的结果是否为true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值