0

SpringBoot 1.4のコントローラテストの1つで統合テストの問題に直面しています。SpringBoot1.4- @ SpringBootConfigurationが見つかりません。IntegrationTestを実行すると、@ ContextConfiguration/@SpringBootTest(クラス)をテストエラーに使用します。

クラスExchangeControllerIT:

public class ExchangeControllerIT extends AbstractSpringControllerIT { 

     // class under test 
     @Autowired 
     private ExchangeController exchangeController; 

     @Autowired 
     private OAuth2RestTemplate restTemplate; 

     @Test 
     public void shouldSuccessWhileExchange() throws Exception { 
     // given  
     controllerHas(mockExchangeServiceReturningStringResponse()); 
     // then  
     getMockMvc().perform(get(Uris.Exchange).accept(MediaType.TEXT_HTML) 
       .content(asString(ExchangeControllerIT.class, ""))) 
       .andExpect(status().isOk()) 
      .andExpect(content().contentType(MediaType.parseMediaType(MediaType.TEXT_HTML + ";charset=UTF-8")));   
     } 

     private void controllerHas(ExchangeService exchangeService) { 
      Reflections.setField(exchangeController, "exchangeService", exchangeService); 
     } 

     private static ExchangeService mockExchangeServiceReturningStringResponse() { 
     return new HandShakeService();   
     } 
} 

抽象クラス以下:

public abstract class AbstractSpringControllerIT extends AbstractSpringIT{ 

     protected MockMvc getMockMvc() { 
      return webAppContextSetup(getApplicationContext()).build(); 
     } 
    } 

AbstractSpringITクラス:

0123スニペット以下 は、プロジェクト構造の明確なアイデアが表示されます

私はSpringBootとテストに新しいです、私は上記のエラーの原因と考えられるソリューション

スタックトレース見つける手助け:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test 

at org.springframework.util.Assert.state(Assert.java:392) 
at org.springframework.boot.test.context.SpringBootTestContextBootstrapper.getOrFindConfigurationClasses(SpringBootTestContextBootstrapper.java:173) 
at org.springframework.boot.test.context.SpringBootTestContextBootstrapper.processMergedContextConfiguration(SpringBootTestContextBootstrapper.java:133) 
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:409) 
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildDefaultMergedContextConfiguration(AbstractTestContextBootstrapper.java:323) 
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:277) 
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildTestContext(AbstractTestContextBootstrapper.java:112) 
at org.springframework.boot.test.context.SpringBootTestContextBootstrapper.buildTestContext(SpringBootTestContextBootstrapper.java:78) 
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:120) 
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:105) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:152) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:143) 
at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:96) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
+0

完全なスタックトレースを含めることはできますか? – megalucio

+0

@megalucio stackTraceを追加しました。ヒントがあるかどうかを調べることができます –

+0

あなたのテストとメインアプリケーションクラスはどんなパッケージですか? –

答えて

-1

は見えるあなたが@SpringBootTest注釈を使用しているにもかかわらず好きではありませんテストが正常に実行されるためには、クラスにクラスを指定する必要があります。最善の解決策ではないかもしれないが、あなたがちょうど使用することができ、あなたのテストのための全体のバネコンテキストをリロードする気にしない場合は、

@SpringBootTest(classes=...) 

また:あなたが必要とそこに含まれるどのようなクラス

チェックあなたのテストクラスでの@SpringBootConfigurationアノテーションの代わりに@SpringBootTest

+0

thanks megalucio私はExchangeControllerITクラスで同じことを試しましたが、今度はネストされた例外はorg.springframeworkです.context.ApplicationContextException:EmbeddedServletContainerFactoryBeanがないためにEmbeddedWebApplicationContextを開始できません。**上記のクラスのどれに@SpringBootConfigurationアノテーションを追加する必要がありますか? –

+0

AbstractSpringControllerITにあると思います。また、提供されたスタックトレースに基づいて以前の回答を変更したので、私の回答をもう一度チェックしてください。 – megalucio

+0

私はAbstractSpringControllerITで@SpringBootConfigurationを試しましたが、それはうまくいきませんでした –

関連する問題