我在运行测试时遇到以下异常。我正在使用Mockito进行模拟。Mockito库提到的提示没有帮助。org.mockito.exceptions.misusing.UnfinishedStubbingException:Unfinishedstubbingdetectedhere:->atcom.a.b.DomainTestFactory.myTest(DomainTestFactory.java:355)E.g.thenReturn()maybemissing.Examplesofcorrectstubbing:when(mock.isOk()).thenReturn(true);wh
使用Mockitospy的用例是什么?在我看来,每个spy用例都可以通过模拟处理,使用callRealMethod。我可以看到的一个区别是,如果您希望大多数方法调用是真实的,它可以节省一些代码行来使用模拟与spy。是这样还是我错过了更大的图景? 最佳答案 spy和模拟之间的区别当Mockito创建一个模拟时——它是从一个类型的类中创建的,而不是从一个实际的实例中创建的。mock只是创建了Class的一个基本的shell实例,完全用于跟踪与它的交互。另一方面,spy将包装现有实例。它仍然会以与普通实例相同的方式运行——唯一的区别是它还
有没有办法匹配以下示例例程的任何类参数?classA{publicBmethod(Classa){}}我如何总是返回一个newB()而不管哪个类被传递到method?以下尝试仅适用于A匹配的特定情况。Aa=newA();Bb=newB();when(a.method(eq(A.class))).thenReturn(b);编辑:一种解决方案是(Class)any(Class.class) 最佳答案 另外两种方法(请参阅我对@TomaszNurkiewicz上一个答案的评论):第一个依赖于编译器根本不会让你传入错误类型的事实:when
有没有办法验证在Mockito中methodTwo之前是否调用了methodOne?publicclassServiceClassA{publicvoidmethodOne(){}}publicclassServiceClassB{publicvoidmethodTwo(){}}publicclassTestClass{publicvoidmethod(){ServiceClassAserviceA=newServiceClassA();ServiceClassBserviceB=newServiceClassB();serviceA.methodOne();serviceB.meth
我想测试一个抽象类。当然可以manuallywriteamock从类继承。我可以使用模拟框架(我正在使用Mockito)而不是手工制作我的模拟来做到这一点吗?怎么样? 最佳答案 以下建议让您在不创建“真实”子类的情况下测试抽象类-Mock是子类。使用Mockito.mock(My.class,Mockito.CALLS_REAL_METHODS),然后模拟任何被调用的抽象方法。例子:publicabstractclassMy{publicResultmethodUnderTest(){...}protectedabstractvoi
使用Mockito,我想verify()在其参数列表中使用byte[]的方法调用,但我没有找到如何编写。myMethod(byte[])我只想要anyByteArray()之类的东西,如何使用Mockito做到这一点? 最佳答案 我会尝试any(byte[].class) 关于java-Mockito匹配器和基元数组,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10066590
我有一个方法调用,我想用mockito模拟。首先,我创建并注入(inject)了一个对象实例,将在该实例上调用该方法。我的目标是验证方法调用中的对象之一。mockito是否允许您在调用mock方法时断言或验证对象及其属性?例子Mockito.verify(mockedObject).someMethodOnMockedObject(Mockito.anyObject())我不想做anyObject()我想检查参数对象是否包含一些特定字段Mockito.verify(mockedObject).someMethodOnMockedObject(Mockito.**compareWithT
有没有办法让stub方法在后续调用中返回不同的对象?我想这样做来测试来自ExecutorCompletionService的不确定响应。即测试无论方法的返回顺序如何,结果都保持不变。我要测试的代码看起来像这样。//CreateancompletionservicesowecangroupthesetaskstogetherExecutorCompletionServicecompletionService=newExecutorCompletionService(service);//Addallthesetaskstothecompletionservicefor(Callablet
我在这里阅读了一些关于静态方法的主题,我想我理解滥用/过度使用静态方法可能导致的问题。但我并没有真正深入了解为什么很难模拟静态方法。我知道其他模拟框架,例如PowerMock,可以做到这一点,但为什么Mockito不能?我读过thisarticle,但作者似乎对static这个词持虔诚的态度,可能是我的理解不够。一个简单的解释/链接会很棒。 最佳答案 我认为原因可能是模拟对象库通常通过在运行时动态创建类来创建模拟(使用cglib)。这意味着他们要么在运行时实现一个接口(interface)(如果我没记错的话,这就是EasyMock所
有没有一种简洁的方法来模拟具有泛型参数的类?假设我要模拟一个类Foo我需要将其传递给期望Foo的方法.我可以很容易地做到以下几点:FoomockFoo=mock(Foo.class);when(mockFoo.getValue).thenReturn(newBar());假设getValue()返回泛型T.但是当我稍后将它传递给一个期望Foo的方法时,它将会有小猫。.转换是唯一的方法吗? 最佳答案 我认为你确实需要转换它,但应该不会太糟糕:FoomockFoo=(Foo)mock(Foo.class);when(mockFoo.ge