也许我的搜索完全失败了,但我找不到任何与如何为Java类/方法编写单元测试相关的文档或讨论,这些类/方法又会调用其他非私有(private)方法。看起来,如果必须使用spy来测试需要模拟内部方法调用的方法,Mockito的立场可能是设计有问题(不是真正的面向对象)。我不确定这是否总是正确的。但使用spy似乎是实现这一目标的唯一方法。例如,为什么你不能有一个“包装器”风格的方法,它反过来依赖于其他方法来实现原始功能,但另外提供功能、错误处理、日志记录或依赖于其他方法结果的不同分支等?所以我的问题有两个方面:拥有一个内部调用其他方法的方法是否设计和实现不当?如果选择Mockito作为他们的
我有简单的类,但有匿名代码块。我需要用测试覆盖这门课。publicclassCleanerTask{privatefinalLoggerlog=LoggerFactory.getLogger(getClass());DataWarehouseMessageDaodwMessageDao;intcleanerDelay=0;TransactionTemplatetemplate;publicCleanerTask(DataWarehouseMessageDaodwMessageDao,intcleanerDelay,TransactionTemplatetemplate){this.dw
我有一个编写测试用例的独立项目;问题是我不能模拟HttpServletRequest,因为在我的servlet中有像getServletContext()这样的调用,因为测试用例是从外部servlet容器运行的。它总是会返回一个错误,说“找不到上下文”。这只是servlet容器的一个依赖项;可以有数百个。例如,initialContext.lookup()也依赖于一个容器。这种场景下如何使用Mockito编写测试用例?请不要询问错误信息;这与其说是技术问题,不如说是逻辑问题。在互联网上寻找教程让我想知道我是否做错了什么。之前似乎没有人遇到过这个问题......你怎么能模拟HttpSer
在循环中使用后是否可能进行模拟设置,例如for(Stringkey:mySet){...}谢谢。 最佳答案 有几个选项:转换使用@Mock注解例子:SetmySet=(Set)mock(Set.class);——或者——@MockprivateSetmySet;@BeforepublicvoiddoBefore()throwsException{MockitoAnnotations.initMocks(this.getClass());//thisshouldcreatemocksforyourobjects...}
如何使用PowerMock模拟Thread.sleep()?示例接口(interface)和类:publicinterfaceMachine{voidsleep(longmillis);}publicclassMachineImplimplementsMachine{privatestaticfinalLoggerlogger=Logger.getLogger(MachineImpl.class);@Overridepublicvoidsleep(longmillis){try{if(millis>0){logger.trace(String.format("Trytosleepfor
以下代码:ObjectMappermapper=Mockito.mock(ObjectMapper.class);Mockito.doThrow(newIOException()).when(mapper).writeValue((OutputStream)Matchers.anyObject(),Matchers.anyObject());Mockito.doNothing().when(mapper).writeValue((OutputStream)Matchers.anyObject(),Matchers.anyObject());try{mapper.writeValue(n
我正在尝试使用mockMvc和mockito测试我的Controller。实际Controller主体如下:MessagecreateXYZ(@RequestBodyXYZinst){//createsXYZ}现在为了通过请求主体推送值,我通过序列化XYZ使用GsonBuilder创建一个JSON。这是类XYZ的结构:classXYZ{ListlistofYs;//someotherpropertiesaswell}我正在为ListlistofYs创建和设置一个模拟,当Gson试图序列化一个具有模拟listofYs的XYZ实例时,它会生成NPE。有解决办法还是我做的完全错了?
当我使用PowerMock和Mockito在Junit测试用例中模拟对象时,我得到了这个异常:java.lang.NoClassDefFoundError:org/mockito/exceptions/base/MockitoSerializationIssue 最佳答案 我在结合PowerMock和Mockito时得到了这个。使用兼容版本修复,如下所示:https://github.com/powermock/powermock/wiki/Mockito#supported-versions
我有以下代码,它从数据库中获取当前计数器值。然后它更新数据库中的计数器,然后再次检索值。intcurrent=DBUtil.getCurrentCount();DBUtil.updateCount(50);//itupdatesthecurrentcountbyadding50intlatest=DBUtil.getCurrentCount();我想以第一次调用应返回100而第二次调用应返回150的方式模拟静态方法。如何使用PowerMockito实现此目的?我正在使用TestNG、Mockito以及PowerMock。 最佳答案
我正在使用Mockitojar为Groovy编写Junit测试用例,但它给了我以下异常:java.lang.NoSuchMethodError:org.mockito.internal.runners.RunnerFactory.createStrict(Ljava/lang/Class;)Lorg/mockito/internal/runners/InternalRunner;atorg.mockito.junit.MockitoJUnitRunner.(MockitoJUnitRunner.java:152)atsun.reflect.NativeConstructorAccess