2016-10-24 13 views
2

私は春の注釈に問題があります。私がしたいのは、共通の設定を持つ1つのアノテーションに必要なテストアノテーションをすべて取得することです。また、Spring Contextが起動するとnullポインタ例外が発生します(豆をオートワイヤできません)。デザインでカスタムアノテーションで@ContextConfigurationを組み合わせることはできませんので、私は@MyTestAnnotationsから設定を使用したい別々の注釈で構成の注釈をテストします

@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 
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

これは、次のとおりです。ここで

は一例です。 see the nice explanation provided sam branan why it would not work

私はAbstractBaseTestに@MyTestAnnotationsから@RunWith(SpringJUnit4ClassRunner.class)を移動したときにそれが役立ちます。この

@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

ようなものを使用することができるはずです。 Thans! –

+0

私はなぜこの男がちょうどそこで起こるかわからない: https://youtu.be/5tgkxGEvK4U?t=2228 –

+0

@PrzemysławSienkiewiczはい。私にもちょっと不思議に思ってください。私はこれが実際にうまくいくかどうかはわかりません。とにかく共有してくれてありがとう – kuhajeyan

関連する問題