Java开发

使用 Mockito 模拟方法的局部变量

我有一个需要测试的类A.以下是A的定义: 公共类 A {公共无效方法一(int参数){//一些操作方法二(整数参数);//一些操作}私人无效方法二(int参数){日期时间 dateTime = new DateTime();//使用dateTime执行一些操作}} 并且基于 dateTime 值,一些数据将被操作,从数据库中检索.对于此数据库,这些值通过 JSON 文件进行持久化. 这使 ..
发布时间:2022-01-08 21:40:38 Java开发

EasyMock:无效方法

我有一个方法在一个类中返回 void,该类是我要测试的类的依赖项. 这个类很大,我只使用其中的一个方法.我需要为测试替换此方法的实现,因为我希望它做一些不同的事情,并且我需要能够访问此方法接收的参数. 我在 EasyMock 中找不到这样做的方法.我想我知道如何使用 Mockito 通过使用 doAnswer 但除非绝对必要,否则我不想添加另一个库. 解决方案 如果我理解你想做 ..
发布时间:2022-01-08 21:40:29 Java开发

使用 Mockito 的通用“any()";方法

我有一个接口,它带有一个需要 Foo 数组的方法: 公共接口 IBar {无效 doStuff(Foo[] arr);} 我正在使用 Mockito 模拟这个接口,我想断言 doStuff() 被调用,但我不想验证传递了什么参数 - “不在乎". 如何使用通用方法 any() 而不是 anyObject() 编写以下代码? IBar bar = mock(IBar.class);... ..
发布时间:2022-01-08 21:40:12 Java开发

jmock 模拟静态方法

我的代码中有一个静态方法,我想以某种方式模拟. 我正在使用 jmock. 我想我可以做到这一点的一种方法是在静态方法周围设置“包装类",然后模拟这个,但我希望有更好的解决方案. 我想错了吗? 反馈: 我将拥有一个接口和类,其中包含一个调用静态方法的方法.它允许我通过模拟对这个包装类的调用来模拟逻辑.(说起来我都觉得很脏:)) 解决方案 我们不支持在 jMock ..
发布时间:2022-01-08 21:39:21 Java开发

每次使用 PowerMock 进行测试后,模拟行为都会重置

我正在使用 PowerMock 编写单元测试,模拟一些实用程序类的行为.为测试类定义一次行为(通过@BeforeClass 注解)原因: 第一次测试调用以返回模拟值 第二次测试调用返回真正的方法返回值 示例代码: import org.junit.Assert;导入 org.junit.BeforeClass;导入 org.junit.Test;导入 org.junit.runne ..
发布时间:2022-01-08 21:39:14 Java开发

使用模拟位置而不在设置中设置它

我正在编写一个应用程序,它利用了 android 中的位置模拟可能性. 我想要实现的是模拟我的位置,而不在开发人员选项中设置“允许模拟位置"标志. 我知道这是可能的,因为它适用于这个应用程序:https://play.google.com/store/apps/details?id=com.lexa.fakegps&hl=en 我尝试了什么: 生成一个 apk,将其移至/s ..
发布时间:2022-01-08 21:38:46 Java开发

模拟 Java InputStream

请提供指针来帮助我模拟那个 java InputStream 对象.这是我希望模拟的代码行: InputStreamReader inputData = new InputStreamReader(System.in);bufferdReader = new BufferedReader(inputData);bufferdReader.readLine(); 解决方案 BufferedRe ..
发布时间:2022-01-08 21:33:59 Java开发

Mockito - @Spy vs @Mock

Mockito - 我理解间谍调用对象的真实方法,而模拟调用双重对象的方法.除非有代码气味,否则还要避免间谍.但是,间谍是如何工作的,我应该什么时候真正使用它们?它们与模拟有何不同? 解决方案 从技术上讲,“模拟"和“间谍"都是一种特殊的“测试替身". 不幸的是,Mockito 使这种区别变得很奇怪. mockito 中的模拟是其他模拟框架中的普通模拟(允许您存根调用;也就是说 ..
发布时间:2022-01-08 21:30:55 Java开发

使用 Mockito 时,模拟和间谍有什么区别?

使用 Mockito 间谍的用例是什么? 在我看来,每个间谍用例都可以通过模拟处理,使用 callRealMethod. 我可以看到的一个区别是,如果您希望大多数方法调用是真实的,它可以节省一些代码行来使用模拟与间谍.是这样还是我错过了更大的图景? 解决方案 答案在文档: 真正的部分模拟(自 1.8.0 起) 最后,经过多次内部辩论&邮件列表上的讨论,部分模拟支持已 ..
发布时间:2022-01-08 21:30:37 Java开发

在 Mockito 中检测到未完成的存根

我在运行测试时遇到以下异常.我正在使用 Mockito 进行模拟.Mockito 库提到的提示没有帮助. org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根:->在 com.a.b.DomainTestFactory.myTest(DomainTestFactory.java:355)例如.thenRet ..
发布时间:2022-01-08 21:30:29 Java开发

是否不鼓励在同一领域使用 @Spy 和 @InjectMocks?

在我现在正在进行的项目中,我经常看到 @Spy 和 @InjectMocks 在字段上一起使用.我从未在任何教程或其他资源中看到过这种方式.我用谷歌搜索了这个特定的组合,但没有在 GitHub 上找到除此线程之外的任何其他内容:https://github.com/mockito/mockito/issues/169 这让我觉得我们以一种奇怪的方式使用它. 注意:我认为同时使用两个注解 ..
发布时间:2022-01-08 21:29:59 Java开发

使用 Mockito 从模拟中抛出已检查的异常

我试图让我的一个模拟对象在调用特定方法时抛出一个检查异常.我正在尝试以下方法. @Test(expectedExceptions = SomeException.class)公共无效 throwCheckedException() {列表列表 = 模拟(List.class);when(list.get(0)).thenThrow(new SomeException());字符串测试 ..
发布时间:2022-01-08 21:27:37 Java开发

如何告诉 Mockito 模拟对象在下次调用时返回不同的东西?

所以,我在类级别创建一个模拟对象作为静态变量,就像这样......在一个测试中,我希望 Foo.someMethod() 返回某个值,而在另一个测试中,我希望它返回一个不同的值.我遇到的问题是,我似乎需要重建模拟才能使其正常工作.我想避免重建模拟,并在每个测试中使用相同的对象. 类 TestClass {私有静态 Foo mockFoo;@课前公共静态无效设置(){mockFoo = 模拟(Fo ..
发布时间:2022-01-08 21:26:22 Java开发

Java 最好的模拟框架是什么?

在 Java 中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么? 解决方案 我在使用 Mockito. 当我尝试学习 JMock 和 EasyMock 时,我发现学习曲线有点陡峭(尽管可能只是我自己). 我喜欢 Mockito,因为它的语法简单明了,我能够很快掌握.最小语法旨在很好地支持常见情况,尽管有几次我需要做一些更复杂的事情,但我发现我想要的东西得到了支持并 ..
发布时间:2022-01-08 21:24:07 Java开发

@Mock 和 @InjectMocks 之间的区别

Mockito框架中的@Mock和@InjectMocks有什么区别? 解决方案 @Mock 创建一个模拟.@InjectMocks 创建该类的一个实例,并将使用 @Mock(或 @Spy)注释创建的模拟注入此实例. 请注意,您必须使用 @RunWith(MockitoJUnitRunner.class) 或 Mockito.initMocks(this) 来初始化这些模拟并注入它们 ..
发布时间:2022-01-08 21:23:01 Java开发

使用 Mockito 来模拟某些方法,但不能模拟其他方法

有什么方法可以使用 Mockito 来模拟类中的某些方法,而不模拟其他方法? 例如,在这个(诚然做作的)Stock 类中,我想模拟 getPrice() 和 getQuantity() 返回值(如下面的测试片段所示),但我希望 getValue() 执行在 Stock 类中编码的乘法 公共类股票{私人最终双倍价格;私人最终 int 数量;库存(双倍价格,数量){this.price = 价 ..
发布时间:2022-01-08 21:22:54 Java开发