Junit快速入门

一、什么是单元测试

  • 单元测试是针对最小的功能单元编写测试代码

  • Java程序最小的功能单元是方法

  • 单元测试就是针对单个Java方法的测试

二、为什么要使用单元测试

2.1使用main()方法测试的缺点:

  • 只能有一个main()方法 ,不能把测试代码分离;

  • 没有打印出测试结果和期望结果;

  • 需要一种测试框架,帮助我们编写测试。

2.2单元测试的好处:

  • 确保单个方法运行正常;

  • 如果修改了代码,只需要确保其对应的单元测试通过;

  • 测试代码本身就可以作为实例代码;

  • 可以自动化运行所有测试并获得报告。

JUnit单元测试框架介绍

断言

断言方法描述
assertNull(java.lang.Object object)检查对象是否为空
assertNotNull(java.lang.Object object)检查对象是否不为空
assertEquals(long expected, long actual)检查long类型的值是否相等
assertEquals(double expected, double actual, double delta)检查指定精度的double值是否相等
assertFalse(boolean condition)检查条件是否为假
assertTrue(boolean condition)检查条件是否为真
assertSame(java.lang.Object expected, java.lang.Object actual)检查两个对象引用是否引用同一对象(即对象是否相等)
assertNotSame(java.lang.Object unexpected, java.lang.Object actual)检查两个对象引用是否不引用统一对象(即对象不等)

单元测试实战

public class TestService {

    @BeforeClass
  public static void beforeClass() {
        System.out.println("BeforeClass");
    }

    @AfterClass
  public static void afterClass() {
        System.out.println("AfterClass");
    }

    @Before
   public void before(){
        System.out.println("before");
    }

    @org.junit.Test
    public void test(){
        System.out.println("Test");
    }
    @org.junit.Test
    public void test2(){
        System.out.println("Test2");
    }

    @After
    public  void after(){
        System.out.println("after----------");
    }
    
}

注意:测试类和方法都要声明为public

在这里插入图片描述

1.使用@Before和@After

–同一个单元测试内的多个测试方法:测试前都需要初始化某些对象,测试后可能需要清理资源;Junit使用@Before和@After可以实现,在@Before方法中初始化测试资源,在@After方法中释放测试资源。

–JUnit对每个@Test方法:执行过程

1、实例化CalCulatorTest;

2、执行@Before方法;

3、执行@Test方法;

4、执行@After方法。

注意: 使用@Before和@After可以保证:

–单个@Test方法执行前会创建新的XxxTest实例;实例变量的状态不会传递给下一个@Test方法。

–单个@Test方法执行前后会执行@Before和@After方法。

2.使用@BeforeClass 和@AfterClass静态方法(过程):

1、在执行所有@Test方法前执行@BeforeClass 标注的静态方法;

2、执行所有测试

3、在执行所有@Test方法后执行@AfterClass静态方法。

注意:@BeforeClass 静态方法初始化的对象只能存放在静态字段中,静态字段的状态会影响到所有的@Test

3.@Before、@After、@BeforeClass、@AfterClass使用场景

–@Before : 初始化测试对象;例如:input=new FileInputStream();

–@After :销毁@Before创建的测试对象,;例如:input.Close();

–@BeforeClass:初始化非常耗时的资源,例如:创建数据库。

–@AfterClass:清理@BeforeClass创建的资源,例如:删除数据库。

4.总结:理解JUnit执行测试的生命周期

1、@Before用于初始化测试对象,测试对象以实例变量存放;

2、@After用于清理@Before创建的对象

3、@BeforeClass用于初始化耗时资源,以静态变量存放;

4、@AfterClass用于清理@BeforeClass创建的资源。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingPeppa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值