2017-12-15 28 views
1

私は内部クラスとしてbeanクラスを使ってテストを書こうとしています。@BeanがSpringTestingで動作しない内部クラスとして(デフォルトのコンストラクタが見つかりません)

によって引き起こさ:org.springframework.beans.BeanInstantiationException: [com.javarticles.spring.SpringContextConfigurationClassesExample $ BeanA]をインスタンス化に失敗しました:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes={SpringContextConfigurationClassesExample.BeanA.class}) 
public class SpringContextConfigurationClassesExample { 
    @Autowired 
    private SpringContextConfigurationClassesExample.BeanA beanA; 

    @Test 
    public void verifyBeans() { 
     assertNotNull(beanA); 
    } 

    @Component 
    public class BeanA { 
     public BeanA(){} 
    } 
} 

しかし

は例外を持っている ありませんデフォルトコンストラクタ見つけた。 。 com.javarticles.spring.SpringContextConfigurationClassesExample $ BeanA()

ことが可能であり、このテストを書く方法:ネストされた例外は java.lang.NoSuchMethodExceptionがありますか?

+0

わかりませんが、論理的にはうまくいかないでしょう。 SpringコンテキストをスピンアップしてすべてのBeanとコンポーネントをロードし、次にテストを実行します。ここで関連Beanを作成します。依存関係を満たすことはできません。 – Bobzone

+0

例外を注意深く読んでください - BeanA:デフォルトのコンストラクターが見つかりません。このクラスを質問に貼り付けてください。 –

+0

Andriy、BaenAはSpringContextConfigurationClassesExampleクラスの内部クラスです。 – Vadim

答えて

0

静的ネストされたクラスをメンバーの内部クラスの代わりに使用します。

@Component 
    static public class BeanA { 
     public BeanA(){} 
    }