2016-10-24 3 views
2

У меня проблема с весенними аннотациями. Все, что я хочу сделать, это захватить целые необходимые аннотации теста к одной аннотации с общей конфигурацией, и я получаю исключение из null-указателя, когда запускается Spring Context (не может использовать autowire beans), но когда я использую эти аннотации отдельно в каждом тестовом классе, все работает нормально.Аннотации конфигурации конфигурации в отдельной аннотации

Вот пример:

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD,ElementType.TYPE}) 
@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration(classes = { JPAConfig.class, AOPConfiguration.class }) 
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class }) 
public @interface MyTestAnnotations { 
} 

И тест, который я хочу использовать конфигурацию из @MyTestAnnotations

@MyTestAnnotations 
public class AspectTest { 

    @Autowired 
    PagingAndSortingBookRepository pagingAndSortingRepo; 
    @Autowired 
    SmartLoggerAspect smartLoggerAspect; 

    JoinPoint joinPoint; 
    // other methods 

    @Test 
    public void pagingTest(){ 
      // line below throws nullPointerException 
      pagingAndSortingRepo.findAll(new PageRequest(1, 1)); 
    } 
} 

ответ

2

Это происходит потому, что при проектировании вы не можете комбинировать @ContextConfiguration с пользовательскими аннотациями , see the nice explanation provided sam branan why it would not work

вы должны быть в состоянии использовать что-то вроде этого

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD,ElementType.TYPE}) 
@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class }) 
public @interface MyTestAnnotations { 
} 

@MyTestAnnotations 
public abstract class AbstractBaseTests 
{ 
} 


@ContextConfiguration(classes = { JPAConfig.class, AOPConfiguration.class }) 
public class MyTest extends AbstractBaseTests { 
    } 
+1

Это помогает, когда я двигаюсь @RunWith (SpringJUnit4ClassRunner.class) от @MyTestAnnotations до AbstractBaseTest. Thans! –

+0

Я не знаю, почему этот парень просто так бывает: https://youtu.be/5tgkxGEvK4U?t=2228 –

+0

@ PrzemysławSienkiewicz да. Заставьте меня немного удивляться. Я не уверен в этом, действительно ли это работает. в любом случае спасибо за обмен – kuhajeyan

Смежные вопросы