Я ранее использовал Spring DI, и одно из преимуществ, которые я ощущаю, заключается в том, что я могу тестировать свои классы bean-компонентов Spring без использования Spring (импорт для краткости опущен):
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, что означает, что я не пишу сеттеры явно.
Я пока использую Hk2 исключительно из-за некоторых анекдотических вещей о том, что Джерси привязан к 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 и т. Д.)
- В противном случае, что это за типичный чистый способ тестирования классов, аннотированных таким образом?