Mockito注入/模拟多种服务

时间:2017-10-13 10:40:52

标签: java unit-testing spring-boot mockito

我正在测试我的Spring Boot Services。

我有一个ServiceA,其中包含RepositoryA ServiceBRepositoryB ClassA

我还有ClassB> 1:n> ClassAClassB拥有ClassBClassA没有提及ClassB)。

在我的测试中,我需要将ClassA添加到ClassA,然后将ServiceB与其服务一起保存。

然后我必须测试一个内部调用void方法的ClassB方法。为此,我需要一个持久的void,因为RepositoryA中的ServiceA - 方法测试“EntityNotFound”并抛出一个导致测试失败的异常。

所以我需要在ServiceBTest.java中使用ClassA来保留ClassB我需要使用的@InjectMocks

我正在使用Mockito进行测试,因此我尝试使用@Mock@InjectMocks private ServiceA serviceA; @InjectMocks private ServiceB serviceB; @Mock private RepositoryA repoA; @Mock private RepositoryB repoB; @Before public void initMocks() { MockitoAnnotations.initMocks(this); } 注入两个服务。但那不起作用。如果我这样做,NOTHING工作正常。

B

任何人都可以帮我完成这项工作?

对于no,我用ClassBTest.java中的内部“Testable”类替换了A a = new A(); B b = new B(); C c = new C(); b.addC(c); a.addB(b) serviceA.update(a); //must be "persisted" to persist b as well C cEmpty = new C(); Mockito.when(serviceB.update(Mockito.any(B.class))).thenReturn(cEmpty); // plain object to compare with serviceB.removeCFromB(b, c); // 1. -> remove 2.-> update 2.1 -> checkEntityNotFound C result = serviceB.findC(a, b, 0); Assert.assertNull(result); 的存储库和服务。但问题是原始类的代码覆盖率没有增加。

{{1}}

0 个答案:

没有答案