Я нашел How can I inject a data source dependency into a RESTful web service with Jersey (Test Framework)?, но я думаю, что я задам немного другой вопрос.Как включить CDI с тестовой платформой Джерси?
Это наблюдение вопрос @PostConstruct of abstract ancestors are not invoked
Я написал библиотеку JAX-RS, и я пытаюсь модульного тестирования с Jersey Test Framework.
Кажется, что HK2 правильно вводит. Но я обнаружил, что некоторые из моих методов перехватчика жизненного цикла, аннотированные @PostConstruct
или @PreDestroy
, не вызываются (или только некоторые вызываемые).
public class MyResource {
@PostConstruct
private void constructed() { // not invoked
}
@Inject
private Some some; // injection works.
}
Как включить CDI с тестовой платформой Джерси? На каких артефактах я должен зависеть?
Вот мои текущие зависимости.
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-grizzly2</artifactId>
<scope>test</scope>
</dependency>
Просто интересно, попробовали ли вы '@ BeforeClass' и' @ AfterClass' аннотированные методы для инициализации и выключения сварки? Поскольку это тестовый класс, кажется подходящим –
@peeskillet Я нашел 'configure()', по-видимому, косвенно вызван из конструктора класса 'JerseyTest'. Вот почему событие «logger» не используется в этом методе. –
Что я имел в виду, так это то, что тесты JUnit предлагают аннотации '@ BeforeClass' и' @ AfterClass', которые можно разместить на произвольных статических методах в вашем тестовом классе. Первый будет вызываться до начала тестирования, а второй - после.Вместо потоковой передачи я просто задавался вопросом, будет ли работать статическое поле Weld, запустить его в методе before и закрыть его после метода after. –