Questions tagged «mockito»

Mockito是Java的模拟框架。它受到EasyMock的启发,但旨在进一步简化模拟存根,验证和工具。

1
PowerMockito模拟单个静态方法和返回对象
我想从包含2个静态方法m1和m2的类中模拟静态方法m1。我希望方法m1返回一个对象。 我尝试了以下 1) PowerMockito.mockStatic(Static.class, new Answer<Long>() { @Override public Long answer(InvocationOnMock invocation) throws Throwable { return 1000l; } }); 这将同时调用m1和m2,它们具有不同的返回类型,因此会给出返回类型不匹配错误。 2)PowerMockito.when(Static.m1(param1, param2)).thenReturn(1000l); 但是,执行m1时不会调用。 3)PowerMockito.mockPartial(Static.class, "m1"); 给出了我无法从http://code.google.com/p/powermock/wiki/MockitoUsage获得的无法提供嘲笑的编译器错误。

7
Mockito-@间谍vs @Mock
Mockito-我知道间谍在对象上调用真实方法,而模拟对象在double对象上调用方法。除非有代码气味,否则也应避免间谍活动。但是,间谍如何工作,我什么时候应该实际使用它们?它们与模拟游戏有何不同?

6
Mockito:模拟私有字段初始化
我如何模拟正在内联初始化的字段变量? class Test { private Person person = new Person(); ... public void testMethod() { person.someMethod(); ... } } 在这里,我想person.someMethod()在测试Test.testMethod()需要模拟person变量初始化的方法时进行模拟。有什么线索吗? 编辑:我不允许修改Person类。

7
Mockito如何仅模拟超类方法的调用
我在某些测试中使用了Mockito。 我有以下课程: class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } } 我只想模拟的第二个调用(super.save)ChildService。第一次调用必须调用real方法。有没有办法做到这一点?
94 java  mockito 

17
当我运行模拟测试时,发生WrongTypeOfReturnValue异常
错误详情: org.mockito.exceptions.misusing.WrongTypeOfReturnValue: Boolean cannot be returned by updateItemAttributesByJuId() updateItemAttributesByJuId() should return ResultRich This exception might occur in wrongly written multi-threaded tests. Please refer to Mockito FAQ on limitations of concurrency testing. 我的代码: @InjectMocks protected ItemArrangeManager arrangeManagerSpy = spy(new ItemArrangeManagerImpl()); @Mock protected JuItemWriteService juItemWriteService; when(arrangeManagerSpy .updateItemAttributes(mapCaptor.capture(), eq(juId), eq(itemTO.getSellerId()))) .thenReturn(false); 正如你所看到的,我呼吁when有关updateItemAttributes(其中不归路boolean)不是updateItemAttributesByJuId。 为什么尝试的Mockito返回一个boolean从updateItemAttributesByJuId? …
94 java  mockito 

5
用参数模拟构造函数
我的课如下: public class A { public A(String test) { bla bla bla } public String check() { bla bla bla } } 在构造函数中的逻辑A(String test)和check()是我试图嘲弄的事情。我想要任何调用,例如:new A($$$any string$$$).check()返回一个虚拟字符串"test"。 我试过了: A a = mock(A.class); when(a.check()).thenReturn("test"); String test = a.check(); // to this point, everything works. test shows as "tests" whenNew(A.class).withArguments(Matchers.anyString()).thenReturn(rk); // also tried: …

4
模拟回调和获取参数值
我没有运气让Mockito捕获函数参数值!我在模拟搜索引擎索引,而不是建立索引,而是使用哈希。 // Fake index for solr Hashmap<Integer,Document> fakeIndex; // Add a document 666 to the fakeIndex SolrIndexReader reader = Mockito.mock(SolrIndexReader.class); // Give the reader access to the fake index Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666)) 我不能使用任意参数,因为我正在测试查询的结果(即查询返回的文档)。同样,我不想为每个文档指定特定值,也不想为每个文档都指定一行! Mockito.when(reader.document(0)).thenReturn(document(fakeIndex(0)) Mockito.when(reader.document(1)).thenReturn(document(fakeIndex(1)) .... Mockito.when(reader.document(n)).thenReturn(document(fakeIndex(n)) 我查看了“使用Mockito”页面上的回调部分。不幸的是,它不是Java,我无法对此做出自己的解释才能在Java中工作。 编辑(为澄清起见):如何获取Mockito捕获参数X并将其传递给我的函数?我想要传递给函数的X的确切值(或ref)。 我不想列举所有情况,并且任意参数将不起作用,因为我正在测试不同查询的不同结果。 Mockito页面上说 val mockedList = mock[List[String]] mockedList.get(anyInt) answers { i => "The parameter …

3
如何使用Mockito匹配传递给Class <T>的参数的null
我有这样的方法: public &lt;T&gt; method(String s, Class&lt;T&gt; t) {...} null在将匹配器用于其他参数时,我需要检查传递给第二个参数的方法,我一直在这样做: @SuppressWarnings("unchecked") verify(client).method(eq("String"), any(Class.class)); 但是,有没有更好的方法(没有抑制警告)?T表示某些其他方法的返回类型,有时void在某些情况下null会传入。

12
如何在日志中模拟方法e
这里的Utils.java是我要测试的类,下面是在UtilsTest类中调用的方法。即使我嘲笑Log.e方法,如下所示 @Before public void setUp() { when(Log.e(any(String.class),any(String.class))).thenReturn(any(Integer.class)); utils = spy(new Utils()); } 我收到以下异常 java.lang.RuntimeException: Method e in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details. at android.util.Log.e(Log.java) at com.xxx.demo.utils.UtilsTest.setUp(UtilsTest.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at …
80 android  junit  mockito 

18
Mockito-存根方法时发生NullpointerException
因此,我开始为我们的Java Spring项目编写测试。 我使用的是JUnit和Mockito。有人说,当我使用when()... thenReturn()选项时,可以模拟服务,而无需模拟它们。所以我要做的是设置: when(classIwantToTest.object.get().methodWhichReturnsAList(input))thenReturn(ListcreatedInsideTheTestClass) 但是无论我执行哪一个子句,总会得到NullpointerException,这当然是有道理的,因为input为null。 另外,当我尝试从对象模拟另一个方法时: when(object.method()).thenReturn(true) 在那里,我还得到了一个N​​ullpointer,因为该方法需要一个未设置的变量。 但是我想使用when().. thenReturn()解决创建此变量的问题,依此类推。我只想确保,如果有任何类调用此方法,那么无论如何,只要返回true或上面的列表即可。 从我的角度来说这是一个基本的误会,还是还有其他问题? 码: public class classIWantToTest implements classIWantToTestFacade{ @Autowired private SomeService myService; @Override public Optional&lt;OutputData&gt; getInformations(final InputData inputData) { final Optional&lt;OutputData&gt; data = myService.getListWithData(inputData); if (data.isPresent()) { final List&lt;ItemData&gt; allData = data.get().getItemDatas(); //do something with the data and allData return …

6
可以在Kotlin中使用Mockito吗?
我面临的问题是Matchers.anyObject()回报null。当用于仅接受非空类型的模拟方法时,它将导致引发“应该不为空”异常。 `when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -&gt; someResponse } 模拟方法: public open fun login(userCredentials: UserCredentials): Response
78 java  mocking  mockito  kotlin 

3
查找Mockito构造的导入静态语句
我正试图冲破我和Mockito之间的砖墙。我为试图为Mockito的东西获取正确的导入静态语句付出了很多精力。您可能会认为有人会抛出一个表,说anyInt()来自org.mockito.Matchers和when()来自org.mockito.Mockito等,但这对新手来说太有用了,不是吗? 这类事情,尤其是与无数以星号结尾的更多import语句混合使用时,并不总是很有帮助: import static org.junit.Assert.*; import static org.mockito.Mockito.*; 是的,我知道并且一直在尝试使用Eclipse窗口-&gt;首选项-&gt; Java-&gt;编辑器-&gt;内容辅助-&gt;收藏夹机制。它有帮助,但并没有击中头部。 这个问题的任何答案将不胜感激。 非常感谢,拉斯

7
Mockito,JUnit和Spring
我直到今天才开始了解Mockito。我写了一些简单的测试(使用JUnit,请参见下文),但是我不知道如何在Spring的托管bean中使用模拟对象。什么是使用Spring的最佳实践。我应该如何向我的bean注入模拟依赖项? 您可以跳过这一步,直到回到我的问题。 首先,我学到了什么。这是一篇很好的文章Mocks Are n't Stubs,它解释了基础知识(Mock的检查行为验证而不是状态验证)。然后在这里有一个很好的例子Mockito 和这里更容易用嘲笑嘲笑。我们必须解释是的Mockito的模拟对象都是模拟和存根。 这里的Mockito这里匹配器,你可以找到更多的例子。 这个测试 @Test public void testReal(){ List&lt;String&gt; mockedList = mock(List.class); //stubbing //when(mockedList.get(0)).thenReturn("first"); mockedList.get(anyInt()); OngoingStubbing&lt;String&gt; stub= when(null); stub.thenReturn("first"); //String res = mockedList.get(0); //System.out.println(res); //you can also verify using argument matcher //verify(mockedList).get(anyInt()); verify(mockedList); mockedList.get(anyInt()); } 效果很好。 回到我的问题。这里有人将Mockito模拟注入Spring Bean中,有人尝试使用Springs ReflectionTestUtils.setField(),但是这里我们建议使用Spring Integration Tests,创建Mock对象来更改Spring的上下文。 我不太了解最后两个链接...有人可以向我解释Spring对Mockito有什么问题吗?这个解决方案怎么了? @InjectMocks private MyTestObject …

4
模拟或存根以进行链式通话
protected int parseExpire(CacheContext ctx) throws AttributeDefineException { Method targetMethod = ctx.getTargetMethod(); CacheEnable cacheEnable = targetMethod.getAnnotation(CacheEnable.class); ExpireExpr cacheExpire = targetMethod.getAnnotation(ExpireExpr.class); // check for duplicate setting if (cacheEnable.expire() != CacheAttribute.DO_NOT_EXPIRE &amp;&amp; cacheExpire != null) { throw new AttributeDefineException("expire are defined both in @CacheEnable and @ExpireExpr"); } // expire time defined in @CacheEnable …

12
@Mock注释后,模拟实例为null
我尝试运行此测试: @Mock IRoutingObjHttpClient routingClientMock; @Mock IRoutingResponseRepository routingResponseRepositoryMock; @Test public void testSendRoutingRequest() throws Exception { CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse(); completeRoutingResponse.regression_latencyMillis = 500L; Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse); RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun (routingClientMock, routingResponseRepositoryMock); ... } 但我得到NullPointerException为: Mockito.when(routingClientMock. 我想念什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.