Tag: mockito

如何模拟私有dao变量?

我有一个dao.create()调用,我想在测试方法时进行模拟。 但我错过了一些东西,因为我还在接受NPE。 这有什么不对? class MyService { @Inject private Dao dao; public void myMethod() { //.. dao.create(object); // } } 如何模拟dao.create()调用? @RunWith(PowerMockRunner.class) @PrepareForTest(DAO.class) public void MyServiceTest { @Test public void testMyMethod() { PowerMockito.mock(DAO.class); MyService service = new MyService(); service.myMethod(); //NPE for dao.create() } }

PowerMock访问私人会员

阅读后: https : //code.google.com/p/powermock/wiki/BypassEncapsulation我意识到,我不明白。 请参阅此示例: public class Bar{ private Foo foo; public void initFoo(){ foo = new Foo(); } } 如何通过使用PowerMock访问私有成员foo (例如,validationfoo不为null)? 注意: 我不想要的是使用额外的get方法修改代码。 编辑: 我意识到我错过了链接页面上的示例代码块和解决方案。 解: Whitebox.getInternalState(bar, “foo”);

mockito:如何匹配java 8中的varargs?

我正在努力将项目从java 7迁移到8,并且在Mockito中遇到编译错误“在”情况下我很难追踪到: when(queryRunner.query(any(String.class), any(ResultSetHandler.class), anyVararg())).thenReturn(mockedWordResultList); 给我一个编译错误: java: reference to query is ambiguous both method query(java.lang.String,java.lang.Object,org.apache.commons.dbutils.ResultSetHandler) in org.apache.commons.dbutils.QueryRunner and method query(java.lang.String,org.apache.commons.dbutils.ResultSetHandler,java.lang.Object…) in org.apache.commons.dbutils.QueryRunner match 在构建1.8.0-b128中发生此错误,但在1.7.0_45中不会发生。 我正在使用mockito 1.9.5。 在java 8中使用anyVarArg()参数匹配的正确方法是什么?

我在Mockito 2.2中使用什么代替Whitebox来设置字段?

当使用Mockito 1.9.x时,我一直在使用Whitebox来设置字段值以“注入”模拟。 以下示例: @Before public void setUp() { eventHandler = new ProcessEventHandler(); securityService = new SecurityServiceMock(); registrationService = mock(RegistrationService.class); Whitebox.setInternalState(eventHandler, “registrationService”, registrationService); Whitebox.setInternalState(eventHandler, “securityService”, securityService); } 我真的很喜欢这种方法,但是现在我尝试升级到Mockito 2.2.7我注意到(或者更确切地说,我的IDE注意到并告诉了我很多次)在Mockito中找不到Whitebox。 我找到了一个可以替代的替代方案,那就是org.powermock.reflect.Whitebox ,问题在于我得到另一个依赖(Powermock),只是为了使用Whitebox。 Powermock也有一个名为Whitebox的类,但遗憾的是它看起来好像不能与Mockito 2.2.x一起使用 Mockito有什么好的选择,我可以用来手动“注入”字段,现在Whitebox已不再可用吗? 解 我在回复@JeffBowman的post时写了一篇评论。 简而言之,我选择复制WhiteBox的代码,并使用它,因为它在大多数测试用例中使用,并且该类与其他类没有依赖关系。 这是解决这个问题的最快途径。 注意 @bcody建议的解决方案是一个更好的选择,如果你使用spring,它不会为你维护额外的代码。 我得到的信息很晚了:(

我如何模拟Object.getClass?

我正在研究一个Java项目想要为DTO中的.equals方法编写unit testing。 在.equals方法中,有两个被测试对象调用的.getClass()方法。 我想嘲笑这个,但我不知道它想要什么类型的对象。 我试过了, when(mockRoomInv.getClass()).thenReturn(RoomInv.class); 但肯定的是,他没有做任何事情。 getClass的返回类型是什么,我该如何操作它?

如何测试Spring @Scheduled

如何测试spring-boot应用程序的@ Scheduled / cron作业? package com.myco.tasks; public class MyTask { @Scheduled(fixedRate=1000) public void work() { // task execution logic } }

为任何整数输入参数设置模拟返回值

when(candidateService.findById(1)).thenReturn(new Candidate()); 我想为任何整数扩展此行为(不一定是1) 如果我啰嗦 when(candidateService.findById( any(Integer.class) )).thenReturn(new Candidate()); 我有编译错误 CandidateService类型中的方法findById(Integer)不适用于参数(Matcher) UPDATE import: import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.util.ArrayList; import java.util.HashSet; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations;

创建一个JsonProcessingException

我正在尝试创建一个由模拟对象抛出的JsonProcessingException。 when(mapper.writeValueAsString(any(Object.class))).thenThrow(new JsonProcessingException(“Error”)); 但是我无法创建JsonProcessingException对象,因为所有构造函数都受到保护。 我该如何解决这个问题?

使用返回Optional 的方法的Mockito错误

我有一个接口与以下方法 public interface IRemoteStore { Optional get(String cacheName, String key, String … rest); } 实现接口的类的实例称为remoteStore。 当我用mockito模拟它并在以下时使用该方法: Mockito.when(remoteStore.get(“a”, “b”)).thenReturn(“lol”); 我收到错误: 无法解析方法’thenReturn(java.lang.String)’ 我认为这与get返回Optional类的实例这一事实有关,所以我尝试了这个: Mockito.<Optional>when(remoteStore.get(“cache-name”, “cache-key”)).thenReturn (Optional.of(“lol”)); 但是,我得到了这个错误: 当Mockito中的(可选”)无法应用于(可选”)时。 它唯一有效的时间是: String returnCacheValueString = “lol”; Optional returnCacheValue = Optional.of((Object) returnCacheValueString); Mockito.<Optional>when(remotestore.get(“cache-name”, “cache-key”)).thenReturn(returnCacheValue); 但上面会返回一个Optional”的实例,而不是Optional’。 为什么我不能直接返回Optional”的实例? 如果可以的话,我应该怎么做呢?

PowerMock,mockito,validation静态方法

我正在尝试让PowerMock与mockito一起使用,我在这里关注文档: http : //code.google.com/p/powermock/wiki/MockitoUsage13 。 为了简化一下,我们假设我有一个静态方法: StaticObj.put(String key, String val) { … } 要测试的类是这样的: public class ClassToTest { public void doSomething(Params p) { if (StringUtils.isNotBlank(p.getK()) StaticObj.put(“k1”, p.getK()); if (StringUtils.isNotBlank(p.getX()) StaticObj.put(“x1”, p.getX()); } } 在我的unit testing中,我想validation当它们不为空或为null时,为K和X调用StaticObj.put,所以我做了类似这样的事情: public void testNormalCase() { // assume that mocking setup for statics already happened in some @Before function.. Params params = […]