我试图为以下静态方法编写一个测试:
public static Field getField (Class<?> type, String fieldName) {
for (Field field : type.getDeclaredFields()) {
if (field.getName().equals(fieldName)) {
return field;
}
}
if (type.getSuperclass() != null) {
return getField(type.getSuperclass(), fieldName);
}
return null;
}
@Test
public void getFieldTest () {
class StupidObject { Object stupidField; }
class ReallyStupidObject extends StupidObject { Object reallyStupidField; }
ReallyStupidObject reallyStupidObject = mock(ReallyStupidObject.class);
// --------------------------------------------------
Field field = FSUtils.getField(reallyStupidObject.getClass(), "stupidField");
// --------------------------------------------------
verify(reallyStupidObject.getClass()).getDeclaredFields();
verify(reallyStupidObject.getClass()).getSuperclass();
verify(reallyStupidObject.getClass().getSuperclass()).getDeclaredFields();
verify(reallyStupidObject.getClass().getSuperclass(), never()).getSuperclass();
assertEquals(field.getName(), "stupidField");
}
多谢!
本。
这似乎不是一个应该用嘲笑来解决的问题。我会选择这样一个具体的测试:
@Test
public void getFieldTest() {
class StupidObject { Object stupidField; }
class ReallyStupidObject extends StupidObject { Object reallyStupidField; }
// test the right field is found in the right class
testFieldFind("stupidField", ReallyStupidObject.class,
StupidObject.class);
testFieldFind("reallyStupidField", ReallyStupidObject.class,
ReallyStupidObject.class);
// check that non-existent fields return null
assertNull(FSUtils.getField(ReallyStupidObject.class, "fooballs"));
}
private static void testFieldFind(String fieldName, Class<?> classToSearch,
Class<?> expectedDeclaringClass) {
Field field = FSUtils.getField(classToSearch, fieldName);
assertEquals(fieldName, field.getName());
assertEquals(expectedDeclaringClass, field.getDeclaringClass());
}
至于原始代码失败的原因--必须对模拟对象调用verify
,即verify(reallyStupidObject).doSomething()
。
我面临Mockito junit测试的问题。我是新手,对我面临的问题有点困惑。在此方面的任何帮助都将不胜感激。 获得异常: 在下面的代码中 我知道活动不是一种模拟,但我不确定是否有办法解决这个问题,因为 是同一类中的一种方法。我需要为编写规则,因为我已经完成了它的单元测试。的定义由外部依赖关系组成。我是否应该嘲笑中存在的外部依赖关系并为它们编写规则,而不是为规则? 我发现了这篇文章:Mockito
如何验证一个模拟对象根本没有被调用?我正在尝试使用Mockito测试一个接口方法的空实现。
我有下课情节。在测试MyTestableClass时,我希望处理Autowired类。我只想模拟AutoWired类中的变量。 示例类如下- 例如,Console在返回true之前应该给我“inside Service class”。 提前道谢!
问题内容: 我已经有一段时间没有接触过Mockito了,我也从未广泛使用它。但是今天,在一些新代码中,我想使用最佳实践,因此我使用以下Java版本退出了模仿内核2.0.54-beta: 我需要此接口的实例进行测试: https://bitbucket.org/globalmentor/rincl/src/bf0e8875a1bae16247dd904e0b8bc067c9f8abc9/src/ma
我有一段时间没有接触过Mockito,也从来没有大量使用过它。但是今天在一些新代码中,我希望使用最佳实践,所以我使用以下Java版本推出了mockito-core 2.0.54-beta: 要重现此问题,请克隆https://bitbucket.org/globalmentor/rincl.git并签出commit2f88d7c5e5ac17b6d316ed54c12cb7b447b7d6ac。然
我在SearchString.contains(“”),我正在尝试调用“when(...).thenreturn(...)”但是mockito抛出了一个异常,说“不能mock/spy class java.lang.String”我不确定在测试这个web服务时我做得是否正确。也许有别的方法可以做到这一点?下面是我的测试类: