我需要为使用maven开发的应用程序(用java编写)实现Junit。我的应用程序中的一些功能依赖于其他应用程序,在那里它获取该应用程序的服务,并在我的应用程序中将其用于连接到db等,当我们在SDN控制器中与其他应用程序一起启动它时。如何测试依赖于其他应用程序并连接到db的函数?
答案 0 :(得分:2)
如果您需要从其他服务(甚至在同一个库中)调用方法,您可以模拟这些调用,并在单元测试中决定响应是什么,因此您的单元测试完全集中在该单元上
您可以使用不同的模拟库,Mockito或unitils.easyMock,例如:
@RunWith(StveJunit4TestClassRunner.class)
public class MyServiceTest {
@TestedObject
private MyService service;
@Mock
@InjectIntiByType
private ExternalService external;
// this for all services used in your service
@Test
public void testMethod(){
Person result = new Person("Jack", "American");
EasyMock.expect(external.findPerson("Jack")).andReturn(result);
EasyMockUnitils.replay();
// this tells you, your tested service is going to call the external service
// and passes "Jack" as param, with result as returned value
String country = service.getPersonCountry("Jack"); // assume this returns the country
// of the person returned by the external service
assertEquals(result.getCountry(), country);
}
}
这只是一个例子,还有很多方法可以做到。
编辑:这是指向您可以查看的tutorial的链接