`
lovnet
  • 浏览: 6758306 次
  • 性别: 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

    JMOCK final class mock

    JMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mockJMOCK final class mock

    junit mock

    junit mock 测试用的啊 csdn 垃圾

    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容器,从而进行单元测试,详细可以参见本文

    junit单元测试及Mock应用,超详细的PPT实战应用

    本文档ppt讲述了软件测试及单元测试的概念及区别、Junit框架概念及基本应用,并有详细的代码示例、异常测试的概念的测试代码、 超时测试的概念及测试代码、忽略测试的概念及测试代码、Mock学习及前后端代码调试、...

    JMock 2.6.1所有源代码

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

    Junit实战第二版

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

    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测试的例子,有单元测试的的例子 ,例如testCase 也有综合测试的例子 例如ALLTest 里面还有一些给读者的建议

    JUnit实战 第2版 (英文版)

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

    JUnit实战(第2版)

    由浅入深、由易到难地对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