单元测试学习总结

JUnit总结

参考于https://segmentfault.com/a/1190000006731125

https://www.cnblogs.com/paxing/p/12835479.html

1.测试类型:

1.单元测试:单一类中代码是否正确
2.集成测试:检查开发的模块和其他模块整合时是否正常工作
3.端对端的测试:将整个系统作为一个整体, 然后从用户的角度进行测试的

2.单元测试基本概念

3.Junit4

1.导入依赖
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>
2.常用方法与注解
创建一个mock对象
//1.1 完全模拟mock
List mockedList = Mockito.mock(List.class)
//1.2 如果要使用注解,必须打开注解开关:MockitoAnnotations.initMocks(this);
@Mock
List mockedList;
//2 @spy 对函数的调用均执行真正部分
@Spy 
List list = new LinkedList();
//3 @InjectMock 创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。

@Mock:对函数的调用均执行mock(即虚假函数),不执行真正部分。

@Spy:对函数的调用均执行真正部分。
设置mock对象的行为

设置mock对象调用某个方法的返回值:

when(mockedList.get(0)).thenReturn("想要的结果");
doReturn("想要的结果")when(mockedList).get(0);

设置调用方法时抛出某个异常:

when(mockedList.get(1)).thenThrow(new RuntimeException());
验证mock对象的行为

验证mock对象是否调用过某个方法

verify(mockedList).add("one");

验证某个mock对象是否从未使用过:

verifyZeroInteractions(mockedList);
其他

@Test (expected = Exception.class) 表示预期会抛出Exception.class 的异常

@Ignore 含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore注解删去,就可以进行正常的测试。

@Test(timeout=100) 表示预期方法执行不会超过 100 毫秒,控制死循环

@Before 表示该方法在每一个测试方法之前运行,可以使用该方法进行初始化之类的操作

@After 表示该方法在每一个测试方法之后运行,可以使用该方法进行释放资源,回收内存之类的操作

@BeforeClass 表示该方法只执行一次,并且在所有方法之前执行。一般可以使用该方法进行数据库连接操作,注意该注解运用在静态方法。

@AfterClass 表示该方法只执行一次,并且在所有方法之后执行。一般可以使用该方法进行数据库连接关闭操作,注意该注解运用在静态方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值