弹簧数据:服务层单元测试
在我的项目中,我在进行单元测试时遇到了麻烦。一个问题是,仅仅进行集成测试的编写速度要快得多,并且还可以测试组件是否实际协同工作。对新颖的“算法”进行单元测试似乎要容易得多。单元测试服务类它只是感觉错误和无用。
我正在使用mockito来模拟弹簧数据存储库(因此是数据库访问)。问题是,如果我告诉模拟的存储库在方法调用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或类似的愚蠢行为。此类情况将由单元测试捕获。“奖励-努力”的比例似乎还不好吗?