让单元测试更简单

本文探讨了单元测试的重要性,特别是在提升代码质量和效率方面的作用。高手倾向于使用单元测试,因为它可以帮助梳理和完善代码逻辑,提高代码的健壮性。通过Spring集成JUnit进行单元测试,可以简化测试流程。文章还强调了单元测试的基础规范,包括测试类的命名和结构,以及如何利用JUnit的特性进行数据管理。
摘要由CSDN通过智能技术生成

让单元测试更简单

阅读引导

1、程序员的脸面,就是代码质量。

2、重视单元测试,提高交付的代码质量

3、为自己工作,为自己的系统工作,做自己的老板,形成正循环:打磨当前工作的核心关键能力——>高效能工作——>更多时间打磨自己的系统——>更高效能工作——>打磨下个层次工作的核心关键能力……

4、核心竞争力,是指你拥有的(独特的)知识经验组合,经过你思维逻辑的组织梳理,在实践中产生无可替代的价值。打造自己的TMS系统(T:专业技术;M:沟通管理、S:行业解决方案),利用复利效应,让系统为自己工作。

工作中有一个现象:

越是高手,越是重视单元测试;越是菜鸟,越不愿意写单元测试。

可能对于菜鸟来说,写完代码就已经非常筋疲力尽了,代码堆完之后,赶紧提交去集成测试……但是,最大的可能性,就是联调过程中经常出现问题,不停地回头修改,反而让整个联调测试进度更滞后。

于是,大家脸上笑嘻嘻,心里却不停吐槽:不靠谱、能力差、拖后腿……各种负面标签打在了菜鸟身上。

于是菜鸟越战战兢兢,更快的堆代码,更快的提交联测……恶性循环。

瞎忙!

高手喜欢单元测试的原因

与菜鸟把单元测试作为负担不同,高手非常喜欢单元测试,因为单元测试能带来无穷的好处。

首先,单元测试驱动开发者重新梳理完善代码逻辑。

我们平常开发的代码,如果说60%是在写正向逻辑,那么剩下的40%就是在处理各种异常情况,从而保证程序的健壮性。

很显然,在使用单元测试的时候,最基本的保证是正向主逻辑通过。

然后,在思考测试用例,思考测试边界的时候,其实就对相当于对自己的代码进行了一次审查。

交付出去的代码质量自然比没有经过测试的高很多。

这也是所谓的TDD测试驱动开发理念的一个要点。

其次,单元测试提升了修改功能的效率与正确性,提升了交付质量。

对于存量功能的修改,如果没有保留测试用例,每次都需要重新思考一遍逻辑。

而有了保留的单元测试用例,完全可以直接重新跑一遍,进行回归测试。

有测试用例保证质量,开发人员的心态,对于代码的把控程序,以及代码的交付质量完全不一样。

最后,单元测试很简单。

如果一个技术使用起来非常复杂,它一定不是好技术。

单元测试,除了菜鸟程序员改变观念以外,因为高手积累了一些工具,让测试变的简单。

下面以Spring框架使用JUnit单元测试框架测试,简单说明。

JUnit单元测试集成到Spring中

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class BaseTest {
	@Autowired
	ApplicationContext context;

}

在开发自己的测试类时,集成上面的test基类,就可以只关注业务逻辑:

public class JmsProducerTest extends BaseTest {
	@Autowired
	private JmsProducer jmsProducer;

	@Test
	public void testSend() throws InterruptedException {
		jmsProducer.sendMessages();
		……
	}
}

另外,JUnit还有如下的特性,可以封装使用

Test Suite 测试组件

可以把多个测试类组合起来,统一管理。

setUpBeforeClass(),在类初始化之前做的事情,例如连接数据库,读取文件等……

setUp(),在每个测试方法执行前做的事情

以及销毁的方法

tearDownAfterClass()

tearDown()

在工作中,有一个绕不开的话题,那就是数据库。

因为我们开发的大部分服务,都是对数据库进行操作。

但是,我们又担心单元测试的数据,会对数据库中的数据造成“污染”。

实际上单元测试是自动回退的。除非在方法上面加上了@Rollback(false)

对自己的代码有追求

这只是一个简单的例子,在同一个项目组同一个系统,积累的越多,测试开发就会消耗的越少。

作为一个程序员,要对自己的代码质量有追求。

不断进步。

junit基础规范

Test类在test包下,要与java包中的被测试类,同样的路径;并且测试类的名字,是在被测试类后面加上Test

Test类中,每一个test方法,都是一个测试用例!

善用Test类中的的@setUp @tearDown等全局方法注解,可以在测试需要插入数据、测试完成删除数据的情况下使用。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值