测试数据库时非常脆弱:数据的改变可能会影响测试的结果。
为目标的依赖创建桩(stub)或mock类是更好的解决方案。
可以使用jMock开源库来快速、简单的定义mock对象。(详细请查看:http://www.jmock.org)
stub:通常指的是目标接口的简单实现,他通常只响应对应的测试中的调用,起作用是为被测试的类创建必要的输入。
mock:是实际的实现对象,被测试的类会使用到他。
demo:利用Jmock
被mock的dao:
-
packagecn.partner4java.mock.dao;
-
-
importcn.partner4java.mock.bean.Hello;
-
-
publicinterfaceHelloDao
{
-
Hello
getById(Long helloId);
-
}
-
packagecn.partner4java.mock.dao;
-
-
importcn.partner4java.mock.bean.Hello;
-
-
publicclassHelloDaoImplimplementsHelloDao
{
-
-
publicHello
getById(Long helloId) {
-
-
returnnull;
-
}
-
}
Service:
-
packagecn.partner4java.mock.service;
-
-
importcn.partner4java.mock.bean.Hello;
-
-
publicinterfaceHelloService
{
-
Hello
findById(Long helloId);
-
}
-
packagecn.partner4java.mock.service;
-
-
importcn.partner4java.mock.bean.Hello;
-
importcn.partner4java.mock.dao.HelloDao;
-
-
publicclassHelloServiceImplimplementsHelloService
{
-
privateHelloDao
helloDao;
-
publicvoidsetHelloDao(HelloDao
helloDao) {
-
this.helloDao
= helloDao;
-
}
-
-
publicHello
findById(Long helloId) {
-
-
Hello
hello = helloDao.getById(helloId);
-
hello.setName(hello.getName()
+"
!");
-
returnhello;
-
}
-
-
}
编写testcase:
-
packagecn.partner4java.mock.test;
-
-
importorg.jmock.Mock;
-
importorg.jmock.MockObjectTestCase;
-
-
importcn.partner4java.mock.bean.Hello;
-
importcn.partner4java.mock.dao.HelloDao;
-
importcn.partner4java.mock.service.HelloServiceImpl;
-
-
publicclassHelloServiceImplTestextendsMockObjectTestCase{
-
privateMock
mock;
-
privateHelloServiceImpl
helloService;
-
-
protectedvoidsetUp()throwsException
{
-
this.mock
=newMock(HelloDao.class);
-
helloService
=newHelloServiceImpl();
-
helloService.setHelloDao((HelloDao)this.mock.proxy());
-
}
-
-
publicvoidtestFindById()
{
-
Long
id = 1L;
-
Hello
hello =newHello();
-
hello.setId(id);
-
hello.setName("HelloWorld");
-
this.mock.expects(once()).method("getById").with(eq(id)).will(returnValue(hello));
-
-
Hello
helloS =this.helloService.findById(id);
-
System.out.println(helloS);
-
}
-
-
}
对web层进行单元测试
Spring在包org.springframework.mock.web中为Web应用所使用的接口提供了方便的桩实现。这个包具备了Servlet API桩对象的集合。
分享到:
相关推荐
FactoryBean:我们在使用Spring过程中一般都是使用基本的的配置,在Spring配置中,还有一种特殊的FactoryBean,这种bean,可以动态的帮我们创建我们需要的bean,如: ProxyFactoryBean,通用的用于获得AOP代理的工厂bean。...
mock junit4
NULL 博文链接:https://alicsd.iteye.com/blog/845023
Jmock Mock 没有接口的类 很方便使用
jmock的chm格式文档。版本2.6.0
junit mock 测试用的啊 csdn 垃圾
JMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mock
struts-junit spring-mock spring-test junit等的javadoc.jar格式的API文档,直接导入Eclipse/MyEclipse/Netbeans等IDE即可实现快速API查询。 包含以下文件: File name -------------------------------------- ...
本篇文章主要介绍了基于Springboot+Junit+Mockito做单元测试的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在java web应用中,通过mock技术可以模拟spring容器,从而进行单元测试,详细可以参见本文
Mock测试主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象),从而使测试顺利进行...JMock是基于JAVA编写的Mock测试框架。
JMock is a library that supports test-driven development1 of Java2 code with mock objects3. Mock objects help you design and test the interactions between the objects in your programs.
由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...
此实例是Junit测试的例子,有单元测试的的例子 ,例如testCase 也有综合测试的例子 例如ALLTest 里面还有一些给读者的建议
由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...
由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...
由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...
Myeclipse中的JUnit测试详细,可以帮助你很容易的上手了解myeclipse下的JUnit测试
朱尼特·莫克托使用JUnit和Mockito进行实用的单元测试-练习和示例该项目通过Tomek Kaczanowski撰写的“使用JUnit和Mockito进行实用单元测试”中的示例和练习来显示我的进度。
简单的mock server,在后台未给出接口之间进行简单的mock