博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerMockRunner和ActiveObjectsJUnitRunner
阅读量:4352 次
发布时间:2019-06-07

本文共 2499 字,大约阅读时间需要 8 分钟。

Jira的二次开发,需要作单元测试。

测试跟数据库连接的类,比如service类,需要在类上加@RunWith(ActiveObjectsJUnitRunner.class).

有时需要搭配mockito使用,jira里好像是内置了mockito还是怎么回事,不用再类上加@RunWith(MockitoJUnitRunner.class),也可以模拟类

但是当有需要模拟类的静态方法和私有方法时,mockito就使不上力了,这是需要导入PowerMock。但是@RunWith只能接收一个参数,而且也不能再类上使用两个@RunWith。

查阅资料,找到一个博客 

里面有降到如何在使用PowerMockRunner,可以接着使用其他Runner,样例里是SpringJUnit4ClassRunner

1 package org.powermock.examples.spring.mockito; 2  3 import org.junit.Test; 4 import org.junit.runner.RunWith; 5 import org.powermock.core.classloader.annotations.PowerMockIgnore; 6 import org.powermock.core.classloader.annotations.PrepareForTest; 7 import org.powermock.modules.junit4.PowerMockRunner; 8 import org.powermock.modules.junit4.PowerMockRunnerDelegate; 9 import org.springframework.beans.factory.annotation.Autowired;10 import org.springframework.test.context.ContextConfiguration;11 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;12 import powermock.examples.spring.IdGenerator;13 import powermock.examples.spring.Message;14 import powermock.examples.spring.MyBean;15 16 import static org.junit.Assert.assertEquals;17 import static org.powermock.api.mockito.PowerMockito.*;18 import static org.powermock.api.support.membermodification.MemberMatcher.method;19 import static org.powermock.api.support.membermodification.MemberModifier.stub;20 import static org.powermock.api.support.membermodification.MemberModifier.suppress;21 22 @RunWith(PowerMockRunner.class)23 @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)24 @ContextConfiguration("classpath:/example-context.xml")25 @PrepareForTest(IdGenerator.class)26 public class SpringExampleTest {27 28     @Autowired29     private MyBean myBean;30 31     @Test32     public void mockStaticMethod() throws Exception {33         // Given34         final long expectedId = 2L;35         mockStatic(IdGenerator.class);36         when(IdGenerator.generateNewId()).thenReturn(expectedId);37 38         // When39         final Message message = myBean.generateMessage();40 41         // Then42         assertEquals(expectedId, message.getId());43         assertEquals("My bean message", message.getContent());44     }45 }
View Code

但是,自己在使用时,并未生效

1 PowerMockito.doAnswer(e -> {2             String key = (String) e.getArguments()[0];3             。。。4             }5         }).when(exportEmployeeCSV, "getSex", anyString());

目的是模拟私有方法,并且不执行私有方法内部的代码,但是多次调整代码还是会执行内部代码。

继续看评论,好像是版本问题

 

 修改为最新版本,重新运行测试用例,Green Bar!

转载于:https://www.cnblogs.com/blog-cq/p/10397064.html

你可能感兴趣的文章
Delphi错误:Stack overflow的解决方法
查看>>
取消chrome(谷歌浏览器)浏览器下最小字体限制
查看>>
模板方法模式
查看>>
什么是ECC内存?
查看>>
使用Visual Studio 2013进行UI自动化测试
查看>>
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>
160809308周子济第六次作业
查看>>
大型Web应用运行时 PHP负载均衡指南
查看>>
为phpStorm 配置PHP_CodeSniffer自动检查代码
查看>>
测试工具网址大全(转)
查看>>
ServiceStack DotNet Core前期准备
查看>>
webpack中‘vant’全局引入和按需引入【vue-cli】
查看>>
Date、String和Timestamp类型转换
查看>>
计算机的组成
查看>>
[简单到爆]eclipse-jee-neon的下载和安装
查看>>
vector
查看>>
Redis学习之set类型总结
查看>>
栈和队列
查看>>
CSS2-3常见的demo列子总结一
查看>>