`
lovnet
  • 浏览: 6704083 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

简单示例mock的使用 (Junit结合Jmock)

 
阅读更多
测试数据库时非常脆弱:数据的改变可能会影响测试的结果。
为目标的依赖创建桩(stub)或mock类是更好的解决方案。
可以使用jMock开源库来快速、简单的定义mock对象。(详细请查看:http://www.jmock.org)

stub:通常指的是目标接口的简单实现,他通常只响应对应的测试中的调用,起作用是为被测试的类创建必要的输入。
mock:是实际的实现对象,被测试的类会使用到他。



demo:利用Jmock

被mock的dao:
  1. packagecn.partner4java.mock.dao;
  2. importcn.partner4java.mock.bean.Hello;
  3. publicinterfaceHelloDao {
  4. Hello getById(Long helloId);
  5. }
  1. packagecn.partner4java.mock.dao;
  2. importcn.partner4java.mock.bean.Hello;
  3. publicclassHelloDaoImplimplementsHelloDao {
  4. publicHello getById(Long helloId) {
  5. //这里面借助什么hibernate之类的,获取实体通过id
  6. returnnull;
  7. }
  8. }

Service:
  1. packagecn.partner4java.mock.service;
  2. importcn.partner4java.mock.bean.Hello;
  3. publicinterfaceHelloService {
  4. Hello findById(Long helloId);
  5. }
  1. packagecn.partner4java.mock.service;
  2. importcn.partner4java.mock.bean.Hello;
  3. importcn.partner4java.mock.dao.HelloDao;
  4. publicclassHelloServiceImplimplementsHelloService {
  5. privateHelloDao helloDao;
  6. publicvoidsetHelloDao(HelloDao helloDao) {
  7. this.helloDao = helloDao;
  8. }
  9. publicHello findById(Long helloId) {
  10. //还额外添加了一些业务逻辑的操作,那么,我们测试的就是这部分业务逻辑操作
  11. Hello hello = helloDao.getById(helloId);
  12. hello.setName(hello.getName() +" !");
  13. returnhello;
  14. }
  15. }

编写testcase:
  1. packagecn.partner4java.mock.test;
  2. importorg.jmock.Mock;
  3. importorg.jmock.MockObjectTestCase;
  4. importcn.partner4java.mock.bean.Hello;
  5. importcn.partner4java.mock.dao.HelloDao;
  6. importcn.partner4java.mock.service.HelloServiceImpl;
  7. publicclassHelloServiceImplTestextendsMockObjectTestCase{
  8. privateMock mock;
  9. privateHelloServiceImpl helloService;
  10. protectedvoidsetUp()throwsException {
  11. this.mock =newMock(HelloDao.class);
  12. helloService =newHelloServiceImpl();
  13. helloService.setHelloDao((HelloDao)this.mock.proxy());
  14. }
  15. publicvoidtestFindById() {
  16. Long id = 1L;
  17. Hello hello =newHello();
  18. hello.setId(id);
  19. hello.setName("HelloWorld");
  20. this.mock.expects(once()).method("getById").with(eq(id)).will(returnValue(hello));
  21. Hello helloS =this.helloService.findById(id);
  22. System.out.println(helloS);
  23. }
  24. }



对web层进行单元测试
Spring在包org.springframework.mock.web中为Web应用所使用的接口提供了方便的桩实现。这个包具备了Servlet API桩对象的集合。
分享到:
评论

相关推荐

    使用FactoryBean结合Jmock实现动态Mock类的注入

    FactoryBean:我们在使用Spring过程中一般都是使用基本的的配置,在Spring配置中,还有一种特殊的FactoryBean,这种bean,可以动态的帮我们创建我们需要的bean,如: ProxyFactoryBean,通用的用于获得AOP代理的工厂bean。...

    mock junit4

    mock junit4

    使用 FactoryBean结合Jmock实现动态Mock类的注入

    NULL 博文链接:https://alicsd.iteye.com/blog/845023

    Jmock Mock 没有接口的类

    Jmock Mock 没有接口的类 很方便使用

    jmock-2.6.0帮助文档chm格式

    jmock的chm格式文档。版本2.6.0

    junit mock

    junit mock 测试用的啊 csdn 垃圾

    JMOCK final class mock

    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文档

    struts-junit spring-mock spring-test junit等的javadoc.jar格式的API文档,直接导入Eclipse/MyEclipse/Netbeans等IDE即可实现快速API查询。 包含以下文件: File name -------------------------------------- ...

    基于Springboot+Junit+Mockito做单元测试的示例

    本篇文章主要介绍了基于Springboot+Junit+Mockito做单元测试的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java单元测试 spring mock的使用

    在java web应用中,通过mock技术可以模拟spring容器,从而进行单元测试,详细可以参见本文

    JMock 2.6.1所有源代码

    Mock测试主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象),从而使测试顺利进行...JMock是基于JAVA编写的Mock测试框架。

    jmock2.5.1

    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展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...

    Junit测试 简单用例

    此实例是Junit测试的例子,有单元测试的的例子 ,例如testCase 也有综合测试的例子 例如ALLTest 里面还有一些给读者的建议

    JUnit实战 第2版 (英文版)

    由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...

    JUnit实战(第2版)

    由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...

    Junit实战第二版 中文完整版 0分下载

    由浅入深、由易到难地对JUnit展开了系统的讲解,包括探索JUnit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从Ant中运行JUnit测试、从Maven2中运行...

    Myeclipse中的JUnit测试详细

    Myeclipse中的JUnit测试详细,可以帮助你很容易的上手了解myeclipse下的JUnit测试

    JunitMockito:使用JUnit和Mockito进行实用的单元测试-练习和示例

    朱尼特·莫克托使用JUnit和Mockito进行实用的单元测试-练习和示例该项目通过Tomek Kaczanowski撰写的“使用JUnit和Mockito进行实用单元测试”中的示例和练习来显示我的进度。

    Node.js-简单的mockserver在后台未给出接口之间进行简单的mock

    简单的mock server,在后台未给出接口之间进行简单的mock

Global site tag (gtag.js) - Google Analytics