我正在测试一个内部使用@Inject的ftp客户端库。我有一个与时间问题相关的问题。
public class FakeFtpServerTest {
@BeforeSuite
public void startFtpServer() {} // not invoked before injection
@AfterSuite
public void stopFtpServer() {}
}
public class MyFtpClientModule {
@Override
protected void configure() {
}
}
@Guice(modules={MyFtpClientModule.class})
public class MyFtpClientTest {
@Inject
@InjectMe
private MyFtpClient client;
}问题是,注入是在TestNG创建MyFtpClientTest实例时调用的,这意味着@BeforeSuite被调用之前的时间。并且绑定和提供一些应该已经连接到伪ftp服务器的ftp客户端的模块失败。
我该如何解决这个问题?有什么技术可以解决这个问题吗?
发布于 2015-03-27 13:52:17
我就这样解决了我的问题。我在@BeforeMethod上编程注入字段,而不是使用@Guice。
public class MyFtpClientTest {
@BeforeSuite
public void startFtpServer() {} // not invoked before injection
@AfterSuite
public void stopFtpServer() {}
@BeforeMethod
public void injectFtpClient() {
client = Guice.createInjector(this).getInstance(FileBack.class);
}
@AfterMethod
public void ejectFtpClient() {
client = null;
}
@Override
protected void configure() {
}
@Inject
private MyFtpClient client;
}https://stackoverflow.com/questions/29293636
复制相似问题