Java Junit用于依赖于其他应用程序的函数

Java Junit用于依赖于其他应用程序的函数,java,maven,junit,Java,Maven,Junit,我需要为使用maven开发的应用程序(用java编写)实现Junit。我的应用程序中的一些功能依赖于其他应用程序,当我们在SDN控制器中与其他应用程序一起启动时,它会获得该应用程序的服务,并在我的应用程序中使用它连接到db等。如何测试依赖于其他应用程序并连接到db的函数?如果需要从其他服务(甚至在同一个库中)调用方法,可以模拟这些调用,并在单元测试本身中确定响应是什么,因此单元测试只关注该单元 您可以使用不同的模拟库,例如Mockito或unitils.easyMock: @RunWith(St

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

如果需要从其他服务(甚至在同一个库中)调用方法,可以模拟这些调用,并在单元测试本身中确定响应是什么,因此单元测试只关注该单元

您可以使用不同的模拟库,例如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);

  }
}
这只是一个例子,还有很多方法可以做到这一点


编辑:这里有一个链接,你可以通过模仿来查看calls@Stultuske把这当作一个答案(加上一个例子:))你怎么模仿这个电话?我尝试在我的应用程序中为这些应用程序添加依赖项。我在教程的答案中添加了一个链接