我想使用Mockito测试一个具有增强功能的java方法。问题是当我不知道如何为增强的工作设置期望时。以下代码来自anunansweredquestioninthemockitogooglegroup:importstaticorg.mockito.Mockito.when;importstaticorg.testng.Assert.assertTrue;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importorg.mockito.Mockito;importorg.testng.an
我正在从我目前正在处理的项目中删除Powermock,因此我正在尝试仅使用Mockito(mockito-core-2.2.28)重写一些现有的单一测试。当我运行测试时,出现以下错误:org.mockito.exceptions.base.MockitoException:Cannotmock/spyclasscom.ExternalpackagePath.ExternalclassMockitocannotmock/spybecause:finalclass我知道这个问题已经有人问过(Howtomockafinalclasswithmockito,Mockobjectscalling
我需要一个在测试期间调用时返回一些东西的方法,拥有该方法的类实例被实现为spy。我知道doNothing()方法只适用于void方法。有没有办法通过返回某些东西的方法获得相同的行为?谢谢! 最佳答案 使用when(spy.myMethod()).thenReturn(null)。这将防止spy调用包装的实例。您必须告诉Mockito对于返回某些内容的方法要返回什么。mock的默认行为是返回null。spy的默认行为是调用包装对象。当您在spy中stub一个方法时,它会阻止对包装对象的调用并执行指定的行为。根据Spy的文档,你也可以做
我正在使用Mockito进行JUnit测试。所以我要测试的代码中使用了一个给定的A类:classA{publicA(){}publicfinalStringa(Stringx){return"A.a:"+x;}}我想用另一个具有相同参数和相同类型返回值的方法调用替换方法调用A.a。如您所见,不可能通过扩展类来覆盖方法a,因为它是最终类。所以我现在拥有的是另一个具有B.b方法的B类:classB{publicB(){}publicStringb(Stringx){return"B.b:"+x;}}现在我想确保每次从代码中调用A.a时,都会使用B.b的返回值。是否有可能使用Mockito实
我刚刚迁移到JDK11以便使用最新的JavaLTS版本。如果我将Eclipse中的执行JRE从10更改为11(并且仅在那时),当我尝试运行我的测试时,我会得到以下异常堆栈跟踪。请注意,如果我切换回jdk-10,一切都会按预期进行。我使用SpringBoot,我的测试也使用Mockito。我的pom.xml也显示在这里。SpringBoot和/或Mockito与jdk-11之间是否存在已知的不兼容性?pom.xml中可能缺少另一个引用?pom.xml:org.springframework.bootspring-boot-starter-parent2.0.5.RELEASEorg.gl
我想使用严格的模拟,至少在第一次开发一些针对旧代码的测试时,所以如果我没有明确定义期望,任何在我的模拟上调用的方法都会抛出异常。据我所知,如果我没有定义任何期望,Mockito将只返回null,稍后会在其他地方导致NullPointerException。这有可能吗?如果是,如何? 最佳答案 你想让它做什么?你可以设置为RETURN_SMART_NULLS,它避免了NPE并包含一些有用的信息。您可以将其替换为自定义实现,例如,从其answer方法中抛出异常:@Testpublicvoidtest(){Objectmock=Mocki
我遇到了Mockitojunit测试的问题。我是新手,对我面临的问题有点困惑。如有任何帮助,我们将不胜感激。classActivity{publicvoidfirstMethod(){Stringstr=secondMethod();}publicStringsecondMethod(){Stringstr=null;/*someCode*/returnstr;}}获取异常:*org.mockito.exceptions.misusing.NotAMockException:Argumentpassedtowhen()isnotamock!*在下面的代码中classActivityTe
我测试的类接收客户端包装器:测试类(片段)privateClientWrappercwpublicTested(ClientWrappercw){this.cw=cw;}publicStringget(Requestrequest){returncw.getClient().get(request);}测试初始化:ClientWrappercw=Mockito.mock(ClientWrapper.class);Clientclient=Mockito.mock(Client.class);Mockito.when(cw.getClient()).thenReturn(client
我有一个名为method1的方法,它接受一个在myManager上调用的double值我传递给这个65.888*60。当我尝试验证这个时,我遇到了浮点问题。验证失败。它期望3953.28但3953.280029296875verify(myManager,times(1)).method1(65.888*60d);无论如何我可以让这个验证对浮点检查进行模糊检查。就像您使用assertEquals在末尾输入增量一样。谢谢 最佳答案 您可以捕获值(value),例如finalArgumentCaptorcaptor=ArgumentCa
我在用mock编写单元测试时遇到了问题。有一个我需要模拟的对象有很多getter,我确实在代码中调用它们。但是,这些不是我的单元测试的目的。那么,有没有一种方法可以模拟所有方法,而不是一个一个地模拟它们。这是代码示例:publicclassObjectNeedToMock{privateStringfield1;...privateStringfield20;privateinttheImportantInt;publicStringgetField1(){returnthis.field1;}...publicStringgetField20(){returnthis.field20