Junit功能取决于其他应用程序

时间:2017-09-06 10:13:29

标签: java maven junit

我需要为使用maven开发的应用程序(用java编写)实现Junit。我的应用程序中的一些功能依赖于其他应用程序,在那里它获取该应用程序的服务,并在我的应用程序中将其用于连接到db等,当我们在SDN控制器中与其他应用程序一起启动它时。如何测试依赖于其他应用程序并连接到db的函数?

1 个答案:

答案 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的链接