JUnit->Mockito->PowerMock->持续更新

本文介绍了如何使用JUnit进行基础测试,包括常用注解、异常测试和参数化测试。接着讲解Mockito如何模拟对象和打桩,通过实例展示了Mockito的行为测试。最后,探讨了PowerMock在应对final类、static方法和private方法测试中的作用,以及如何与JUnit结合使用。
摘要由CSDN通过智能技术生成

最近在公司做需求,要求开发需要有相应的单元测试代码,第一次做单测相关的知识,就在这做一篇总结

一、JUnit

JUnit是Java最基础的测试框架,主要的作用就是断言。

方法名 方法描述
assertEquals 断言传入的预期值与实际值是相等的
assertNotEquals 断言传入的预期值与实际值是不相等的
assertArrayEquals 断言传入的预期数组与实际数组是相等的
assertNotNull 断言传入的对象是不为空
assertFalse 断言条件为假
assertSame 断言两个对象引用同一个对象,相当于“==”
assertThat 断言实际值是否满足指定的条件

常用注解

注解名 含义
@Test 表示此方法为测试方法
@Before 在每个测试方法前执行,可做初始化操作
@After 在每个测试方法后执行,可做释放资源操作
@BeforeClass 在类中所有方法前运行。此注解修饰的方法必须是static void
@Parameters 指定测试类的测试数据集合
@FixMethodOrder 指定测试类中方法的执行顺序
@RunWith 指定该测试类使用某个运行器

JUnit常用方法

我们测试下面这个简单的时间转换工具类,来说明一下具体的用法。

class DateUtil {
   

    companion object {
   
        // 英文全称  如:2017-11-01 22:11:00
        val FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss"

        /**
         * 掉此方法输入所要转换的时间输入例如("2017-11-01 22:11:00")返回时间戳
         *
         * @param time
         * @return 时间戳
         */
        @Throws(ParseException::class)
        fun dateToStamp(time: String): Long {
   
            val sdr = SimpleDateFormat(FORMAT_YMDHMS, Locale.CHINA)
            val date = sdr.parse(time)
            return date.time
        }

    	/**
    	 * 将时间戳转换为时间
     	 */
        fun stampToDate(lt: Long): String {
   
            val simpleDateFormat = SimpleDateFormat(FORMAT_YMDHMS, Locale.CHINA)
            val date = Date(lt)
            return simpleDateFormat.format(date)
        }
    }
}

在这里插入图片描述
我们发现预期值和实际结果不符合,测试失败
接下来测试dateToStamp方法,这里写两个断言方法在这里插入图片描述
左下角这个绿色的勾勾就表示运行成功啦


测试异常

比如上述的dateToStamp()方法中,可能会抛出ParseException异常,我们可以验证是否抛出
在这里插入图片描述
验证一个方法是否抛出了异常,可以给@Test注解设置expected参数来实现
在这里插入图片描述


参数化测试

在这里插入图片描述
连续执行三次都成功(这里需要注意,每一次执行都是独立的,相互不影响)


二、Mockito

在实际的单元测试中,我们测试的类之间会有或多或少的耦合,导致我们无法顺利的进行测试,这时我们就可以使用Mockito,Mockito库能够Mock(我喜欢理解为模拟)对象,替换我们原先依赖的真实对象,这样我们就可以避免外部的影响,只测试本类,得到更准确的结果。

常用的Mock方式

class MockitoTest {
   

    /**
     * 方法1
     */
    @Test
    fun testIsNotNull() {
   
        val person1 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值