2016-12-09 3 views
8

Durch Anschluss an den offiziellen doc hier: http://docs.spring.io/spring-boot/docs/1.4.0.M2/reference/htmlsingle/#TestingFrühling Boot 1.4 Testing: Konfigurationsfehler: gefunden mehrere Erklärungen von @BootstrapWith

ich eine meiner REST API Methode wie folgt testen wollte:

@RunWith(SpringRunner.class) 
@WebMvcTest(LoginController.class) 
@SpringBootTest(classes = Application.class) 
public class AuthorizationServiceTest { 
    @Autowired 
    private TestRestTemplate restTemplate; 

    @Test 
    public void test() { 
     Object returnedObject=his.restTemplate.getForObject("/login", Object.class); 
    } 
} 

wie in der doc erklärte:

The search algorithm works up from the package that contains the test until it finds a @SpringBootApplication or @SpringBootConfiguration annotated class. As long as you’ve structure your code in a sensible way your main configuration is usually found.

ich habe meinen Code richtig strukturiert (atleast glaube ich):

AuthorizationService: ist unter Paket com.xxx.yyy.zzz.authorization;

AuthorizationServiceTest: ist unter Paket com.xxx.yyy.zzz.authorizationTest;

Ich erhalte diese Ausnahme (Full Trace):

java.lang.IllegalStateException: Configuration error: found multiple declarations of @BootstrapWith for test class [com.gatcbiotech.blueberry.gateway.authorizationTest.AuthorizationServiceTest]: [@org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTestContextBootstrapper), @org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.context.SpringBootTestContextBootstrapper)] 
    at org.springframework.test.context.BootstrapUtils.resolveExplicitTestContextBootstrapper(BootstrapUtils.java:155) 
    at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:126) 
    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:422) 
    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 org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Bitte helfen Sie mir mit diesem, habe ich verbrachte bereits mehr als 2-3 Stunden ohne Erfolg.

Danke.

+8

'@ SpringBootTest' und' @ WebMvcTest' sich gegenseitig aus ... Entweder Sie testen die ganze Anwendung oder Sie testen eine Scheibe, aber nicht beides. –

+1

@M.Deinum: sein großer Hinweis, danke – Roxy

Antwort

6

Diese Ausnahme tritt auf, wenn der Federtest die Hauptkonfigurationsklasse nicht finden kann. Versuchen Sie, @ContextConfiguration anootation zu Ihrer Testklasse hinzuzufügen. Folgen Sie dem Frühling Test Dokumention für weitere Einzelheiten (Abschnitt Detecting test configuration)

Mein Beispiel Test-Klasse ist wie folgt:

@RunWith(SpringRunner.class) 
@ContextConfiguration(classes=Application.class) 
@WebMvcTest(MyController.class) 
public class MyConrollerTests { 
    ... 
} 
+0

Arbeitete perfekt! – Kaushal28

Verwandte Themen