拦截方法用Java调用mockito或proxies

时间:2018-06-14 08:53:59

标签: java testing junit

我想知道是否有办法拦截与服务器联系的类方法调用,并返回我的应用程序的配置设置,然后返回测试所需的值。我的应用程序看起来像这样

package application;

class Application { 
  private static synchronized void getServerConfiguration() {
      ConfigurationAccessor accessor = new ConfigurationAccessor();
      optionOne = accessor.getOption("option-one"); // <- intercept this method call and return different value
      ...
  }
}

在我的测试中,我需要使用应用程序的运行实例来运行GUI测试:

package tests;

class SomeTest {

@BeforeClass public static void startApplication() {
  createUsers();
  Application.start(); <- this will start application and load config from server
}

不幸的是,无法通过代理服务器运行连接来模拟响应。

1 个答案:

答案 0 :(得分:0)

如果将ConfigurationAccessor注入Application类,则可以在SomeTest中注入模拟。即创建一个构造函数

Application(ConfigurationAccessor accessor) {
    this.accessor = accessor;
}

然后在你的测试中你将能够

Application target;
@Mock
ConfigurationAccessor accessorMock;
@Before
public void setUp() {
    target = new Application(accessorMock);
}