我以前使用过 Spring DI,我认为的好处之一是我可以在不涉及 Spring 的情况下测试我的 Spring bean 类(为简洁起见省略了导入):
public class Foo {
private String field;
public void setField(String field) { this.field = field; }
public String getField() { return field; }
}
public class TestFoo {
@Test
public void test_field_is_set() {
Foo foo = new Foo();
foo.setField("Bar");
assertEquals("Bar", foo.getField());
}
}
现在我正在试验 JSR-330,这意味着不显式编写 setter。
到目前为止,我一直在使用 Hk2,纯粹是因为一些关于 Jersey 与 Hk2 相关联的轶事,并且很难与其他 JSR-330 实现共存。
public class Foo {
@Inject
private String field;
}
我有一半预计会发生一些神奇的事情,@Inject 注释导致设置器可用,但事实并非如此:
Foo foo = new Foo();
foo.setField("Bar"); // method setField(String) is undefined for the type Foo
- 我如何(方便地)在不调用框架的情况下测试这种带注释的类?
- 如果做不到这一点,我如何以可移植的方式调用框架(即,不将我的测试代码紧密耦合到 Hk2、Guice 等)
- 如果做不到这一点,那么测试以这种方式注释的类的典型、干净的方法是什么?