Получение NPE для bean-компонента @Autowired при использовании пользовательской составной аннотации в JUnit Jupiter - PullRequest
1 голос
/ 11 апреля 2019

TransactionalIntegrationTest.java

@TestMethodOrder(OrderAnnotation.class)
@SpringJUnitWebConfig(locations = { "classpath:service.xml","classpath:data.xml" })
@Tag("1")
public @interface TransactionalIntegrationTest {}

MyTestTest .java

@TransactionalIntegrationTest
public class MyTestTest {
@Autowired
protected CreateUser createUser;

@BeforeEach
public void setUp() throws Exception {
createUser.createTimesheetUser(...)} --> NPE
}

Получение исключения NullPointerException для createUser.

Если я не использую метааннотации, тогдавсе работает нормально.

MyTestTest.java

@TestMethodOrder(OrderAnnotation.class)
@SpringJUnitWebConfig(locations = { "classpath:service.xml","classpath:data.xml" })
@Tag("1")
public class MyTestTest {
@Autowired
protected CreateUser createUser;

@BeforeEach
public void setUp() throws Exception {
createUser.createTimesheetUser(...)} --> works now
}

1 Ответ

2 голосов
/ 13 апреля 2019

Возможно, вам не хватает объявления @Retention, которое позволяет средам, таким как Spring и JUnit, просматривать аннотации во время выполнения.

Объявление составленной аннотации следующим образом должно работать.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@TestMethodOrder(OrderAnnotation.class)
@SpringJUnitWebConfig(locations = { "classpath:service.xml", "classpath:data.xml" })
@Tag("1")
public @interface TransactionalIntegrationTest {
}
...