基于nGrinder进行负载测试
简介
nGrinder是一个基于Grinder的压力测试平台。在此平台上你可以创建测试脚本、执行测试、监控目标服务器,同步的生成测试结果。
架构
基础组件
nGrinder由两种关键组件:
- 控制器:提供性能测试的Web接口,支持协调测试进程、收集并展示测试相关的统计…
5 years ago
0
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