Ginkgo学习笔记
简介
Ginkgo /ˈɡɪŋkoʊ / 是Go语言的一个行为驱动开发(BDD, Behavior-Driven Development)风格的测试框架,通常和库Gomega一起使用。Ginkgo在一系列的“Specs”中描述期望的程序行为。
Ginkgo集成…
阅读全文
5 years ago
2
4
Python单元测试
unittest
简介
属于标准库的一部分,类似于JUnit。下面是一个基本的例子:
1 2 3 4 5 6 7 8 9 10 11 12 |
# 编写测试用例模块 import util # 被测试模块 import unittest class TestUtilFunc(unittest.TestCase): def setUp(self): pass # 每个测试函数运行之前 def tearDown(self): pass # 每个测试函数运行之后 def test_indexOf(self): # 测试用例 self.assertEqual(0,util.stringutils.indexOf('123','1')) # 运行单元测试 if __name__ == '__main__' unittest.main() |
从这个例子可以看到:
- 测试用例以类的形式进行分组,从 unittest.TestCase继承
- 测试方法以开头
- unittest支持类似于JUnit的准备/清理机制
- 单元测试的入口点均为unittest.main()
- unittest.TestCase提供了一系列断言方法
跳过测试
可以在测试类、测试方法上添加装饰器,以便在特定条件下,跳过某些测试:
命令行
基…
阅读全文
5 years ago
0
1
Go语言单元测试和仿冒
testing
单元测试
Go语言提供了一个轻量级的测试框架,此框架由testing包和 go test -run命令组成。
要编写测试用例,你需要创建一个以 _test.go结尾的源文件。该文件中包含一个或多个如下签名的函数:
如果想让测试失败,调用testing.T的方法:
基准测试
testing包还支持性能基准测试。要执行基准测试,调用命令。
基准测试方法的签名如下:
如果要基准测试并发执行的性能,可以使用标记,并且调用助手函数:
验证样例…
阅读全文
7 years ago
0
基于Spring Test和Mockito进行单元测试
场景说明
本文引入一个简单的银行业务场景,用来阐述如何集成Spring Test、Junit、Mockito,以简化单元测试工作。该场景主要的业务代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/** * 人员 */ public class Person { private int id; private String name; private Account defaultAccount; } /** * 账户 */ public class Account { private int id; private int balance; private Person person; } /** * 人员服务接口 * */ public interface PersonService { /** * 查询人员用户 */ Person getPerson( int id ); /** * 得到人员默认账户 */ Account getDefaultAccount( Person p ); } /** * 账户服务接口 * */ public interface AccountService { /** * 查询人员默认账户余额 */ int queryBalanceOfDefaultAccount( int personId ); } |
假设你已经实现了服务AccountService:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
@Service ( "accountService" ) public class AccountServiceImpl implements AccountService { private Map<Integer, Object[]> accountDatabase; @Inject private PersonService personService; @PostConstruct public void init() { accountDatabase = new HashMap<Integer, Object[]>(); //字段:账号,余额 accountDatabase.put( 100, new Object[] { "6225100", 68861 } ); accountDatabase.put( 101, new Object[] { "6225101", 1851 } ); accountDatabase.put( 102, new Object[] { "6225102", 845 } ); accountDatabase.put( 103, new Object[] { "6225103", 16598 } ); } @Override public int queryBalanceOfDefaultAccount( int personId ) { Person person = personService.getPerson( personId ); Account defaultAccount = person.getDefaultAccount(); return (Integer) accountDatabase.get( defaultAccount.getId() )[1]; } } |
而你的搭档负责的PersonService还没有开发完毕,如何方便的进行单元测试呢?
在JUnit中集成Spring上下文的支持
你可能会觉得,我们不需要在单元测试中引入Spring。对于上面的例子的确可以这么说,它太简单了,AccountServiceImpl 依赖的PersonService完全可以通过setter手工注入。但是实际的开发场景要比这个例子复杂的多,待测试类可能和S…
阅读全文
9 years ago
5
4
使用Mockito进行单元测试
Mockito简介
Mockito是一个Java仿冒框架,所谓仿冒,就是创建一个“虚假”的类,来模拟一个类的行为。之所以需要“仿冒”,可能出于下列考虑:
- 某个类已经进入单元测试,而协作类尚未开发完成。此时需要快速模拟出协作类,避免耽误测试进度
- 协作类的实现可能存…
12 years ago
0