我使用 TestNG 进行单元和集成测试,使用 Guice 进行 DI。我想像对待其他类一样对待我的测试类——而不是直接使用注入器,我宁愿定义用@Inject 标记的字段,并在每次测试之前将它们注入。
有没有这样的框架?我相信AtUnit做了类似的事情,但我不确定它是如何与 TestNG 集成的,也不知道它有多成熟。
我使用 TestNG 进行单元和集成测试,使用 Guice 进行 DI。我想像对待其他类一样对待我的测试类——而不是直接使用注入器,我宁愿定义用@Inject 标记的字段,并在每次测试之前将它们注入。
有没有这样的框架?我相信AtUnit做了类似的事情,但我不确定它是如何与 TestNG 集成的,也不知道它有多成熟。
Cedric has now added a @Guice
annotation directly into TestNG to facilitate this use case.
TestNG 在内部使用 Guice,但它也使得在 TestNG 看到它们之前注入测试类变得非常容易(使用 Guice 或您喜欢的任何其他框架)。
您需要做的就是实现IObjectFactory,然后在使用 -objectfacfory 启动 TestNG 时声明您的类名。
然后 TestNG 会将所有对象创建委托给您的工厂,这允许您创建实例并在将它们返回给 TestNG 之前注入它们。
有关如何使用它并让它与 TestNG.xml 组交互的示例,请查看我的博客条目http://biggerwrench.blogspot.com/2014/02/testng-using-guice-for-dependency.html