在java中这样:
@Injected
private Int a;
@Injected
private Int b;
public void myMethod() {
System.out.println(a);
System.out.println(b);
}
我不知道如何测试此方法。
我不建议您像这样编写代码,并且是否已经编写以重构。依赖注入的想法是具有可以注入运行时的依赖项。目前,它们被反射注入,因此Davidxx表示您必须使用反射来设置所需的值。这可能会引起您的头痛。
而不是使用这样的现场注射:
@Inject
private Int b;
您可以使用这样的设置器注入:
@Inject
public void setB(int b) {
this.b = b
}
另一种方法是使用这样的构造函数注入:
public YourClass {
private int a;
private int b;
@Inject
public YourClass(int a, int b){
this.a = a;
this.b = b;
}
}
假设您的意思是使用@Inject
(来自javax.inject
),那么您可以使用Mockito中的@InjectMocks
,尽管这可能与原始值无法很好地工作(假设您打算写作int
而不是Int
)。
但是,有一些警告,但是:https://tedvinke.wordpress.com/2014/02/13/mockito-why-why-why-you-should-not-not-not-should-not-inot-ind-injectMocks-antoctmocks-antoctmocks-antocks-anotation-to-autowire-fields/
如何测试使用没有私人参数的方法 Getters(注入)?
仅带有反射,因为您没有直接设置这些字段的方法。
您可以在手头或使用工具进行此类PowerMock进行操作。
WhiteBox
类允许实现它。
现在,我不建议这样做。
这很棘手,应该可以看到组件的依赖项,以使它们清除并允许它们自然可切换和可测试。
您不被迫使用二传手。
您可以使用构造函数注入。
@Inject
public Foo(Int a, Int b) {
this.a = a;
this.b = b;
}
这有点冗长,但实际上没什么大不了的。