我想知道是否有办法拦截与服务器联系的类方法调用,并返回我的应用程序的配置设置,然后返回测试所需的值。我的应用程序看起来像这样
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
}
不幸的是,无法通过代理服务器运行连接来模拟响应。
答案 0 :(得分:0)
如果将ConfigurationAccessor注入Application类,则可以在SomeTest中注入模拟。即创建一个构造函数
Application(ConfigurationAccessor accessor) {
this.accessor = accessor;
}
然后在你的测试中你将能够
Application target;
@Mock
ConfigurationAccessor accessorMock;
@Before
public void setUp() {
target = new Application(accessorMock);
}