在Java中这样:
@Injected
private Int a;
@Injected
private Int b;
public void myMethod() {
System.out.println(a);
System.out.println(b);
}
我不知道如何测试这种方法。
答案 0 :(得分:0)
如何测试使用私有参数的方法 吸气剂(注入)?
仅使用反射,因为您没有直接设置这些字段的方法
您可以手头或使用PowerMock等工具完成此任务。
WhiteBox
类允许实现它。
现在,我不建议这样做 它很棘手,组件的依赖关系应该是可见的,以使它们清晰,并允许它们自然地切换和测试。
您不会被迫使用制定者 你可以使用构造函数注入。
@Inject
public Foo(Int a, Int b) {
this.a = a;
this.b = b;
}
它有点冗长但实际上并不是什么大问题。
答案 1 :(得分:0)
假设您的意思是使用@Inject
(来自javax.inject
),那么您可以使用Mockito中的@InjectMocks
,尽管这可能不会对原始值有效(假设您打算写int
而不是Int
)。
但使用此功能有一些注意事项:https://tedvinke.wordpress.com/2014/02/13/mockito-why-you-should-not-use-injectmocks-annotation-to-autowire-fields/
答案 2 :(得分:0)
我不建议您编写这样的代码,如果它已经编写为重构它。依赖注入的想法是具有可以注入运行时的依赖性。目前它们是通过反射注入的,因此davidxx说你必须使用反射来设置你需要的值。这可能会让你头疼不已 而不是像这样使用现场注入:
@Inject
private Int b;
您可以像这样使用setter注入:
@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;
}
}