草庐IT

java - 如何更改通过引用传递给 Mockito 中的模拟的对象

给定以下代码@MockClientclient;ByteArrayOutputStreambaos=newByteArrayOutputStream();client.retrieveFile(baos);//clientissupposedtofillboaswithdata如何指示Mockito填充baos对象? 最佳答案 您可以使用MockitosAnswer.doAnswer(newAnswer(){@OverridepublicObjectanswer(InvocationOnMockinvocation){Object[

java - 如何处理来自 Mocks 的 Setter/Getter 方法?

所以我仍然无法使用Mockito。因此,假设我有以下类(请忽略它的逻辑或结构,这只是我从另一个类创建的一个简短示例,具有不同的名称等等。):publicclassRestaurant(@AutowiredprivateCustomerServicecustomerService;privateCustomerInputDataupdateCustomer(CustomerInputDatainputData){StringcustomerId=inputData.getID();Customercustomer=customerService.getCustomerById(custo

java - 模拟我正在测试的同一个类中的方法调用,它真的是代码味道吗?

我正在尝试测试一个服务类(负责调用存储库层并在需要时进行一些操作),基本上,这就是我要测试的类classCarServiceImpl{publicCarfindById(Stringid){//callrepositorylayertofindacar}publicvoiddeleteById(Stringid){Carcar=this.findById(id);if(car!=null){//Callrepositorylayertoupdatethecar}else{ThrowNotFOundException();}}}如您所见,我在deleteById方法上调用了findByI

java - PowerMock Mockito [PowerMockito] @PrepareForTest -> java.lang.NoClassDefFoundError : javassist/NotFoundException

我正在尝试在现有的JUnit测试中使用我的第一个PowerMockito[PowerMock+Mockito]模拟。当我只存在类级注释@PrepareForTest(以及@RunWith(PowerMockRunner.class)时,我已经缩小了范围,但没有任何实际的模拟代码),我得到java.lang.NoClassDefFoundError:javassist/NotFoundException:如果我注释掉@PrepareForTest,以及任何实际的模拟代码以消除混杂变量,该错误不会发生;如果我只对@PrepareForTest取消注释,则会发生错误。所以我相信这可以将问题缩

java - 如何模拟正在测试的同一个类中的另一个方法?

我正在为一个类编写JUnit测试用例,该类有两个方法methodA、methodB。我想在我的测试用例中模拟从methodA调用methodB我正在对我正在测试的类使用spy,但方法B仍然被执行。这是类publicclassSomeClass{publicObjectmethodA(Objectobject){object=methodB(object);returnobject;}publicObjectmethodB(Objectobject){//dosomthingreturnobject;}}这是测试类@RunWith(org.powermock.modules.junit4

java - Mockito - 检查是否在对象上调用了 NO 方法(未访问对象)

我想编写一个测试,将模拟对象A传递给被测对象B,并检查是否调用了A的任何方法。为了提供一些上下文,类B旨在根据一组参数以特定方式操纵A,并且在某些条件下它根本不应该对它做任何事情。所以我的目标是测试那个场景。我知道如何测试特定方法是否被调用:verify(A,never()).myMethod();但我找不到一种方法来确保A没有调用任何方法。有办法做到这一点吗? 最佳答案 我相信verifyNoInteractions可能是你要找的。在您的情况下,您将调用Mockito.verifyNoInteractions(A)。publics

java - 如何使用 MockMVC 传递 Controller 的 @RequestBody 参数

带有@RequestParam注解的参数可以通过使用:post("/******/***").param("variable","value")但是如何传递带有@RequestBody注解的参数值呢?我的测试方法是:@TestpublicvoidtestCreateCloudCredential()throwsException{CloudCredentialsBeancloudCredentialsBean=newCloudCredentialsBean();cloudCredentialsBean.setCloudType("cloudstack");cloudCredential

java - 哪个是最好的 Java 隔离框架? JMock、Easymock、Mockito 或其他?

我知道以前有人问过这个问题,但最后一次是在2008年年中。如果您现在开始一个新项目,您会使用哪个?为什么?它们在可读性、可用性、可维护性和整体稳健性方面的优势/劣势是什么? 最佳答案 之前用过Easymock,现在用的是Mockito。与Easymock相比,我发现Mockito更简单。Easymock和Mockito的详细对比可以引用here 关于java-哪个是最好的Java隔离框架?JMock、Easymock、Mockito或其他?,我们在StackOverflow上找到一个类似

java - 使用模拟构造函数参数模拟抽象类?

我想使用Mockito对抽象类进行单元测试,详见greatanswer.诀窍在于,抽象类依赖于注入(inject)其构造函数的策略。我已经创建了该策略的模拟,并且我希望我的模拟BaseClass实例将模拟策略用于我的单元测试。关于如何连接它有什么建议吗?我目前没有使用任何IoC框架,但正在考虑使用Spring。也许它可以解决问题?//abstractclasstobetestedw/mockinstanceabstractBaseClass{//StrategygetsmockedtooprotectedBaseClass(Strategystrategy){...}}更新:根据Moc

java - 如何模拟在方法内部创建的对象?

考虑一下publicclassUserManager{privatefinalCrudServicecrudService;@InjectpublicUserManager(@NonnullfinalCrudServicecrudService){this.crudService=crudService;}@NonnullpublicListgetUsersByState(@NonnullfinalStringstate){returnUserPresentation.getUserPresentations(newUserQueries(crudService).getUserByS