草庐IT

DexMaker-Mockito

全部标签

java - 如何使用 Mockito 检查参数是否包含两个子字符串?

我的测试中有一行目前看起来像:Mockito.verify(mockMyObject).myMethod(Mockito.contains("apple"));我想修改它以检查参数是否同时包含"apple"和"banana"。我该怎么办? 最佳答案 只需使用Mockito.matches(String),例如:Mockito.verify(mockMyObject).myMethod(Mockito.matches("(.*apple.*banana.*)|(.*banana.*apple.*)"));

java - mockito 验证与 ArgumentCaptor 的交互

要检查与方法调用中的参数属于某种类型的模拟的交互次数,可以这样做mock.someMethod(newFirstClass());mock.someMethod(newOtherClass());verify(mock,times(1)).someMethod(isA(FirstClass.class));这要归功于对isA的调用,因为someMethod被调用了两次,但只有一次使用参数FirstClass然而,当使用ArgumentCaptor时,这种模式似乎是不可能的,即使Captor是为特定参数FirstClass创建的这不起作用mock.someMethod(newFirstC

java - <T> 的 Mockito.any()

我想模拟一个带有签名的方法:publicTdocumentToPojo(DocumentmongoDoc,Classclazz)我模拟如下:Mockito.when(mongoUtil.documentToPojo(Mockito.any(Document.class),Mockito.any(WorkItemDTO.class)))但我得到错误:方法documentToPojo(Document,Class)在类型MongoUtil不适用于参数(Document,WorkItemDTO)Mockito中有什么方法可以帮助我模拟T吗? 最佳答案

java - 用 mockito 模拟单例

我需要测试一些在方法调用中使用单例的遗留代码。测试的目的是确保类sunder测试调用单例方法。我在SO上看到过类似的问题,但所有答案都需要其他依赖项(不同的测试框架)——不幸的是,我仅限于使用Mockito和JUnit,但使用这种流行的框架应该是完全可能的。单例:publicclassFormatterService{privatestaticFormatterServiceINSTANCE;privateFormatterService(){}publicstaticFormatterServicegetInstance(){if(INSTANCE==null){INSTANCE=n

java - 如何使用 mockito 测试 REST 服务?

我是Java单元测试的新手,听说Mockito框架非常适合用于测试目的。我已经开发了一个REST服务器(CRUD方法),现在我想测试它,但我不知道怎么做?我更不知道这个测试程序应该如何开始。我的服务器应该在localhost上运行,然后在该url上进行调用(例如localhost:8888)?这是我目前尝试的方法,但我很确定这不是正确的方法。@TestpublicvoidtestInitialize(){RESTfulGenericrest=mock(RESTfulGeneric.class);ResponseBuilderbuilder=Response.status(Respons

java - 尝试 stub 包保护方法时,Mockito 模拟调用真实方法实现

我正在尝试使用Mockito1.8.5对方法进行stub,但这样做会调用引发异常的真实方法实现(使用""作为参数值)。packagebackground.internal;//locatedintrunk/tests/java/background/internalpublicclassMoveStepTest{@TestpublicvoidtestMoveUpdate(){finalStringreturnValue="value";finalFileAttachmentContainerfile=mock(FileAttachmentContainer.class);doRetur

java - 在 Java 中模拟文件 - 模拟内容 - Mockito

我对模拟还很陌生,我一直在尝试模拟实际内容(基本上只在内存中创建一个虚拟文件),以便在任何时候都不会将数据写入磁盘。我尝试了一些解决方案,例如模拟文件并模拟尽可能多的属性,然后使用文件写入器/缓冲写入器写入文件,但这些都不能很好地工作,因为他们需要规范路径。任何人都找到了除此或类似之外的解决方案,但我正在接近这个错误?我一直是这样的:privatevoidmocking(){FilebadHTML=mock(File.class);//settingthepropertiesofbadHTMLwhen(badHTML.canExecute()).thenReturn(Boolean.F

java - Mockito isA(Class<T> clazz) 如何解决类型安全问题?

在我的测试中,我有以下行:when(client.runTask(anyString(),anyString(),isA(Iterable.class)).thenReturn(...)isA(Iterable.class)产生警告,它需要未经检查的转换才能符合Iterable.那是什么语法?isA(Iterable.class)isA((Iterable)Iterable.class不工作。有什么建议吗? 最佳答案 Mockito/Hamcrest和泛型类是的,这是Mockito/Hamcrest的普遍问题。通常将isA()与泛型

java - mockito 在 spy 方法上返回对象序列

我知道您可以设置几个不同的对象以在模拟中返回。前任。when(someObject.getObject()).thenReturn(object1,object2,object3);你能以某种方式对spy对象做同样的事情吗?我在没有运气的spy身上尝试了上述方法。我在文档中阅读了在下面这样的spy上使用doReturn()doReturn("foo").when(spy).get(0);但是deReturn()只接受一个参数。我想在spy身上按特定顺序返回不同的对象。这可能吗?我有一个类似以下的类(class),我正在尝试对其进行测试。我想测试myClass,而不是anotherCla

java - 如何使用 Mockito 在模拟上显示所有调用

我有一个失败的单元测试,我不确定原因。我希望能够看到在被测系统中发生的模拟上的所有调用。这不是我想要的所有测试的行为,只是我需要快速调整以找出问题所在的测试。但是,这似乎有点像hack。是否可以在Mockito中本地执行此操作,而无需使用Thread.currentThread().getStackTrace()?这不是首选,因为堆栈跟踪包括Mockito内部使用的所有其他调用。 最佳答案 此功能自Mockito1.9.5起内置。只需使用mock(ClassToMock.class,withSettings().verboseLog