在我的项目中,我在进行单元测试时遇到了麻烦。一个问题是,仅进行集成测试编写起来要快得多,并且还可以测试组件是否实际协同工作。单元测试新颖的“算法”左右似乎要容易得多。单元测试服务类它只是感觉错误和无用。
我正在使用 mockito 来模拟 spring 数据存储库(因此是数据库访问)。问题是,如果我告诉模拟存储库在方法调用 getById 上返回实体 A,它显然会返回它,并且服务也会返回它。是的,该服务做了一些额外的事情,但非常小的事情,比如加载惰性集合(来自休眠)。显然我在单元测试中没有任何惰性集合(代理)。
例子:
@Test
public void testGetById() {
System.out.println("getById");
TestCompound expResult = new TestCompound(id, "Test Compound", "9999-99-9", null, null, null);
TestCompoundRepository mockedRepository = mock(TestCompoundRepository.class);
when(mockedRepository.findOne(id)).thenReturn(expResult);
ReflectionTestUtils.setField(testCompoundService, "testCompoundRepository",
mockedRepository, TestCompoundRepository.class);
TestCompound result = testCompoundService.getById(id);
assertEquals(expResult, result);
}
万岁,其余的成功。多么惊喜!不是真的没有。
有人可以向我解释我做错了什么吗?否则这种测试的意义何在?我的意思是我告诉返回 expResult 然后它被返回。哇。多么惊喜!感觉就像我在测试 mockito 是否有效,而不是我的服务。
编辑:
如果出现一些愚蠢的错误,我看到的唯一好处就是在那里留下了一条不需要的行,将返回值设置为 null 或类似的愚蠢的东西。这种情况将被单元测试捕获。“回报-努力”比率仍然看起来很糟糕吗?