为什么来自TestNG传递的Guice不能识别@ javax.inject.Inject,而来自com.google.inject包的Guice呢?

时间:2010-12-22 22:02:38

标签: java dependency-injection annotations guice testng

我正在尝试Guice。我做了一个简单的例子,它与Guice Getting Started手册中的例子非常相似。

但它有一段时间不起作用并说:

  

无法找到合适的构造函数   在mypack.ServiceUser中。课程必须   有一个(只有一个)   用@Inject或注释构造函数   一个零参数的构造函数   不是私人的。在   mypack.ServiceUser.class(ServiceUser.java:14)   找到mypack.ServiceUser

问题在于进口。我将Google Guice和TestNG都附加到了该项目中。我从org.testng.guice包中导入了类。但是注释Inject是从javax.inject包中导入的。我将导入更改为org.testng.guice.Inject后,我的程序开始工作。

但之后我又玩了一点进口。我将所有org.testng次导入更改为com.google.inject。该计划仍然有效。之后我回到@Inject注释并将其导入更改为javax.inject.Inject(因为它是我的第一个破解版本)。此后该计划仍然有效。

我再次检查了一下:来自TestNG软件包的Guice不适用于javax.inject.Inject,而来自Google软件包(com.google.inject)的Guice正常使用它。

为什么这么奇怪?

P.S。我使用Guice和TestNG的最新版本(guice-3.0-rc1和testng-5.14.5)。

1 个答案:

答案 0 :(得分:1)

简短的回答是:@Guice仍然是一项正在进行中的工作,正如我们所说的那样在邮件列表上设计,所以它仍然是实验性的。

此外,您正在使用为TestNG内部使用而保留的未记录的包(org.testng.guice)。

我今天推了一个新版本,您可以在http://testng.org/beta

下载

请注意,此新版本不再包含org.testng.guice,因此请确保无论何时需要Guice符号,都可以从com.google.inject导入它们。

如果您有任何其他问题/疑虑,请在testng-users邮件列表上发帖。

感谢。