2017-12-01 16 views
0

私のSpringセキュリティフォームをテストしようとしています。私は私のプロジェクトで完全な注釈設定をしています(下を見てください)。今私はSpringJUnit4ClassRunnerでテストケースを設定しようとしており、その中のいくつかの条件をチェックしています。 @ContextConfiguration注釈に自分のコンテキスト設定が表示されないため、私はそれを行うことができません。私はAbstractAnnotationConfigDispatcherServletInitializerを使用してプロジェクトを設定します。以下のコードも参照してください。SpringJUnit4ClassRunnerは、Java設定で定義されたコンテキストでmyが表示されません。

これはテストクラスである:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = WebInit.class) 
public class test { 

    @Autowired 
    private WebApplicationContext context; 
    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     mockMvc = MockMvcBuilders 
       .webAppContextSetup(context) 
       .apply(springSecurity()) 
       .build(); 
    } 

    @Test 
    public void someTest() throws Exception { 
     mockMvc.perform(post("/").with(csrf().asHeader()).with(user("testuser").roles("USER"))); 
    } 
} 

これは、Configクラスである:

@Configuration 
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer { 

    protected Class<?>[] getRootConfigClasses() { 
     return new Class[]{RootConfig.class, SecurityConfig.class}; 
    } 

    protected Class<?>[] getServletConfigClasses() { 
     return new Class[]{WebConfig.class}; 
    } 

    protected String[] getServletMappings() { 

     return new String[]{"/"}; 
    } 


} 

そしてまた、私は、エラーログ

SEVEREを囲む:キャッチ例外TestExecutionListenerを可能にしながら、テストインスタンスを準備する[org.springframewor[email protected]4157f54e] [email protected]] org.springframework.beans.factory.BeanCreationException: 'securityTests.test'という名前のBeanを作成中にエラーが発生しました:自動依存依存の注入が失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドをautowireできませんでした:private org.springframework.web.context.WebApplicationContext securityTests.test.context;ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです:[org.springframework.web.context.WebApplicationContext]タイプの修飾Beanが見つかりません:この依存関係のautowire候補となる少なくとも1つのbeanが必要です。依存関係のアノテーション:{@ org.springframework.beans.factory.annotation.Autowired(=真必須)}

はすべての私の春の依存関係はのpom.xmlで同じバージョン(スプリング4.2.3.RELEASE)を持っています。私は私のためのコンテキストを設定する.xmlファイルを作成したくありません。私はすべてjava構成でやりたいどうすればいいのですか? 事前にお礼をお寄せください

答えて

0

私は実際に自分で自分の問題を解決しました。 これは、私のpom.xmlファイルでは、私は、データが2.0.1.RELEASEに跳ね上がることに依存していたことが判明しました。これは、テストの正しい実行中に何とか中断していました。最も可能性の高い理由は、春データ2.0.1がpom.xmlに追加した他の春のコンポーネントからいくつかのクラスを引き出していたのですが、私のバージョンは4.2.1です。リリースおよび春データで引かれたものは5.0.0です。そこでオーバーライドが発生しました。とにかく、pom.xmlからバネデータの依存関係を削除した後、すべてがうまくいった。 お返事ありがとう

0

@WebAppConfigurationを追加すると、WebApplicationContextが利用可能になります。

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration 
@ContextConfiguration(classes = WebInit.class) 
public class test { 

    @Autowired 
    private WebApplicationContext context; 
    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     mockMvc = MockMvcBuilders 
       .webAppContextSetup(context) 
       .apply(springSecurity()) 
       .build(); 
    } 

    @Test 
    public void someTest() throws Exception { 
     mockMvc.perform(post("/").with(csrf().asHeader()).with(user("testuser").roles("USER"))); 
    } 
} 
関連する問題