Junit学习(二):不同的测试策略

测试覆盖率

测试覆盖率工具可以告诉哪些代码被测试覆盖了,哪些没有被测试到。理想状态下,应该是百分之百的代码覆盖率,这样我们才能确认自己的代码逻辑功能没有因为重构而破坏。通常IDE会提供相应的功能或者插件来提供测试覆盖率的检测功能,笔者使用的是IDEA开发工具,启用和设置测试覆盖率工具的方法见以下链接:
https://www.w3cschool.cn/intellij_idea_doc/intellij_idea_doc-nwur2fi9.html

如何解决测试依赖问题?

最常见的一个问题是:如果你在开发过程中需要使用JDBC访问数据库,你该如何测试?有三种测试方式可以满足你的要求:

  1. 使用Stub进行粗粒度的测试
  2. 使用mock objects进行测试
  3. 容器内测试

下面我们分别介绍一下这三种不同的测试方式。

使用Stub进行粗粒度测试

stub是一种机制,用来模拟真实代码或者尚未完成的代码所产生的的行为。因为stub需要模拟真实的系统,往往比较复杂,难以编写,并且本身也需要调试,所以stub的方式往往不是很推荐。例如,你需要和数据库交互,如果你需要做数据库stub,你需要模拟和数据库Client的交互,如获取连接,查询/更新数据,复杂性太高,将会抵消测试带来的优势。

使用mock objects进行测试

mocks替换了测试中与你方法协作的对象,从而提供一个隔离层。mocks并不实现任何逻辑,它们只是提供一种使测试能够控制仿造类的所有业务逻辑方法行为的空壳。由于mock objects是一个空壳,所以不至于出错,你也不必测试它们。下面我们以一个简单的例子进行介绍,是一个转账的服务,账户信息的定义如下:

[...]
public class Account {
	private String accountId;
	private long balance;
	public Account(String accountId, long initialBalance) {
		this.accountId = accountId;
		this.balance = balance;
	}
	public void debit(long amount) {
		this.balance -= amount;
	}
	public void credit(long amount) {
		this.balance +=
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值