Самый простой выход - использовать пустой конструктор. Вы все еще можете переопределить конструктор в расширенном классе.
Но со всем наследством это не оптимально. Вот почему JUnit 4 вместо этого использует аннотации.
Другой вариант - создать вспомогательный метод в классе factory / util и позволить этому методу выполнять всю работу.
Если вы используете Spring, вам следует рассмотреть возможность использования @TestExecutionListeners
аннотации. Что-то вроде этого теста:
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({CustomTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class})
@ContextConfiguration("test-config.xml")
public class DemoTest {
Spring AbstractTestExecutionListener
содержит, например, этот пустой метод, который вы можете переопределить:
public void beforeTestClass(TestContext testContext) throws Exception {
}
ПРИМЕЧАНИЕ: НЕ упускайте из виду / пропускайте DependencyInjectionTestExecutionListener
при добавлении custom TestExecutionListeners
. Если сделаешь, то все автопроводы будут null
.