单元测试的方法

可测试性

在设计软件时,要想一下这个函数/模块/系统要怎么测,当用这些标准去衡量系统时,可能会发现设计根本没有考虑过设计,这样,系统常常只有最外层的接口可以测试,即整个系统必须集成起来才能测试。所以在设计的时候,必须将可测试性纳入考量,以便于能够完成不同层次的测试,减少对集成环境的依赖。

步骤:

1.尽可能每个模块做更多的测试,使构成系统的每个模块尽可能稳定,把继承测试环境更多的留做公共的验收资源
2.尽可能搭建本地的集成测试环境,周边的系统可以采用模拟服务的方案。

在软件开发中考虑测试,实际上是思考软件质量的问题,把质量问题的思考前移到开发,甚至设计阶段,是软件开发从传统进入到现在的关键。

编写可测试性代码的原则:

1,分离不确定输入

案例1:判断闰年

public boolean isLeapYear() {
Date date = new Date();
int year = 1900 + date.getYear();
return year % 4 == 0;
}
以上方法的可测试性非常差,因为它依赖了一个固定的当前时间,如果要测试未来的时间,那就只能去等待

改进:
public boolean isLeapYear(int year) {
return year % 4 == 0;
}

2.面向抽象编程(这是编写可测试代码的基础)

案例2:

在开发一个爬虫程序,爬取拼多多的商品信息,如果发现返回失败,重试3次,每次间隔10秒,如果是一个初级开发者,可能会直接用new创建一个HttpClient这样的代码,但当验证访问时,是否会重试3次,且每次间隔10秒,这时,编写单元测试是非常困难的,当你发现使用了new很难测试的时候,就要考虑使用抽象的接口来替换了。

编写单元测试的技巧

案例3:

@Service
public class UserService{
@Autowired
private IUserDao userDao;
public void save(User user) {
userDao.insert(user,id, user.firstName + " " + user.lastName);
}
}

几个设问
1.单元测试测什么?是为了验证类的行为是否符合预期
2.如何处理依赖的行为不符合预期的情况?正常工作的情况下,被测试类能正常工作,类的所以依赖都是正确的。
3.如果在运行单元测试时,启动spring容器和数据库?单元测试不能启动spring和数据库,这是继承测试要做的、

测试过程
1.创建被测试对象
UserService userService = new UserService();
2.创建mock对象
IUserDao mockDao = mock(IUserDao.class);
3.对假对象进行打桩
when(mockDao).insert(anyString(), anyString()).doNothing();
4.对假对象进行断言
userService.save(new User(“123”, “hello”, “world”));
verify(mockDao).insert(eq("123), eq(hello world));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值