Java开发
我有一个需要测试的类A.以下是A的定义: 公共类 A {公共无效方法一(int参数){//一些操作方法二(整数参数);//一些操作}私人无效方法二(int参数){日期时间 dateTime = new DateTime();//使用dateTime执行一些操作}} 并且基于 dateTime 值,一些数据将被操作,从数据库中检索.对于此数据库,这些值通过 JSON 文件进行持久化. 这使
..
我有一个方法在一个类中返回 void,该类是我要测试的类的依赖项. 这个类很大,我只使用其中的一个方法.我需要为测试替换此方法的实现,因为我希望它做一些不同的事情,并且我需要能够访问此方法接收的参数. 我在 EasyMock 中找不到这样做的方法.我想我知道如何使用 Mockito 通过使用 doAnswer 但除非绝对必要,否则我不想添加另一个库. 解决方案 如果我理解你想做
..
我有一个接口,它带有一个需要 Foo 数组的方法: 公共接口 IBar {无效 doStuff(Foo[] arr);} 我正在使用 Mockito 模拟这个接口,我想断言 doStuff() 被调用,但我不想验证传递了什么参数 - “不在乎". 如何使用通用方法 any() 而不是 anyObject() 编写以下代码? IBar bar = mock(IBar.class);...
..
我的代码中有一个静态方法,我想以某种方式模拟. 我正在使用 jmock. 我想我可以做到这一点的一种方法是在静态方法周围设置“包装类",然后模拟这个,但我希望有更好的解决方案. 我想错了吗? 反馈: 我将拥有一个接口和类,其中包含一个调用静态方法的方法.它允许我通过模拟对这个包装类的调用来模拟逻辑.(说起来我都觉得很脏:)) 解决方案 我们不支持在 jMock
..
我正在使用 PowerMock 编写单元测试,模拟一些实用程序类的行为.为测试类定义一次行为(通过@BeforeClass 注解)原因: 第一次测试调用以返回模拟值 第二次测试调用返回真正的方法返回值 示例代码: import org.junit.Assert;导入 org.junit.BeforeClass;导入 org.junit.Test;导入 org.junit.runne
..
我正在编写一个应用程序,它利用了 android 中的位置模拟可能性. 我想要实现的是模拟我的位置,而不在开发人员选项中设置“允许模拟位置"标志. 我知道这是可能的,因为它适用于这个应用程序:https://play.google.com/store/apps/details?id=com.lexa.fakegps&hl=en 我尝试了什么: 生成一个 apk,将其移至/s
..
我有简单的集成测试 @Testpublic void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() 抛出异常 {mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.
..
请提供指针来帮助我模拟那个 java InputStream 对象.这是我希望模拟的代码行: InputStreamReader inputData = new InputStreamReader(System.in);bufferdReader = new BufferedReader(inputData);bufferdReader.readLine(); 解决方案 BufferedRe
..
protected int parseExpire(CacheContext ctx) throws AttributeDefineException {方法 targetMethod = ctx.getTargetMethod();CacheEnable cacheEnable = targetMethod.getAnnotation(CacheEnable.class);ExpireExpr
..
我有一个 enum 开关或多或少像这样: 公共静态枚举 MyEnum {A, B}公共 int foo(MyEnum 值) {开关(值){案例(A):返回calculateSomething();案例(B):返回calculateSomethingElse();}throw new IllegalArgumentException("不知道怎么处理" + value);} 我希望测试涵盖所有行
..
Mockito - 我理解间谍调用对象的真实方法,而模拟调用双重对象的方法.除非有代码气味,否则还要避免间谍.但是,间谍是如何工作的,我应该什么时候真正使用它们?它们与模拟有何不同? 解决方案 从技术上讲,“模拟"和“间谍"都是一种特殊的“测试替身". 不幸的是,Mockito 使这种区别变得很奇怪. mockito 中的模拟是其他模拟框架中的普通模拟(允许您存根调用;也就是说
..
使用 Mockito 间谍的用例是什么? 在我看来,每个间谍用例都可以通过模拟处理,使用 callRealMethod. 我可以看到的一个区别是,如果您希望大多数方法调用是真实的,它可以节省一些代码行来使用模拟与间谍.是这样还是我错过了更大的图景? 解决方案 答案在文档: 真正的部分模拟(自 1.8.0 起) 最后,经过多次内部辩论&邮件列表上的讨论,部分模拟支持已
..
我在运行测试时遇到以下异常.我正在使用 Mockito 进行模拟.Mockito 库提到的提示没有帮助. org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根:->在 com.a.b.DomainTestFactory.myTest(DomainTestFactory.java:355)例如.thenRet
..
在我现在正在进行的项目中,我经常看到 @Spy 和 @InjectMocks 在字段上一起使用.我从未在任何教程或其他资源中看到过这种方式.我用谷歌搜索了这个特定的组合,但没有在 GitHub 上找到除此线程之外的任何其他内容:https://github.com/mockito/mockito/issues/169 这让我觉得我们以一种奇怪的方式使用它. 注意:我认为同时使用两个注解
..
我试图让我的一个模拟对象在调用特定方法时抛出一个检查异常.我正在尝试以下方法. @Test(expectedExceptions = SomeException.class)公共无效 throwCheckedException() {列表列表 = 模拟(List.class);when(list.get(0)).thenThrow(new SomeException());字符串测试
..
所以,我在类级别创建一个模拟对象作为静态变量,就像这样......在一个测试中,我希望 Foo.someMethod() 返回某个值,而在另一个测试中,我希望它返回一个不同的值.我遇到的问题是,我似乎需要重建模拟才能使其正常工作.我想避免重建模拟,并在每个测试中使用相同的对象. 类 TestClass {私有静态 Foo mockFoo;@课前公共静态无效设置(){mockFoo = 模拟(Fo
..
我一直在尝试使用 Mockito 模拟具有可变参数参数的方法: 接口 A {B b(int x, int y, C...c);}A a = 模拟(A.class);B b = 模拟(B.class);when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b);assertEquals(b, a.b(1, 2)); 这不起作用,但是如果
..
在 Java 中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么? 解决方案 我在使用 Mockito. 当我尝试学习 JMock 和 EasyMock 时,我发现学习曲线有点陡峭(尽管可能只是我自己). 我喜欢 Mockito,因为它的语法简单明了,我能够很快掌握.最小语法旨在很好地支持常见情况,尽管有几次我需要做一些更复杂的事情,但我发现我想要的东西得到了支持并
..
Mockito框架中的@Mock和@InjectMocks有什么区别? 解决方案 @Mock 创建一个模拟.@InjectMocks 创建该类的一个实例,并将使用 @Mock(或 @Spy)注释创建的模拟注入此实例. 请注意,您必须使用 @RunWith(MockitoJUnitRunner.class) 或 Mockito.initMocks(this) 来初始化这些模拟并注入它们
..
有什么方法可以使用 Mockito 来模拟类中的某些方法,而不模拟其他方法? 例如,在这个(诚然做作的)Stock 类中,我想模拟 getPrice() 和 getQuantity() 返回值(如下面的测试片段所示),但我希望 getValue() 执行在 Stock 类中编码的乘法 公共类股票{私人最终双倍价格;私人最终 int 数量;库存(双倍价格,数量){this.price = 价
..