[SPRING] Spring 부트 테스트가 실패합니다. ServletWebServerFactory 빈이 없어서 ServletWebServerApplicationContext를 시작할 수 없습니다.
SPRINGSpring 부트 테스트가 실패합니다. ServletWebServerFactory 빈이 없어서 ServletWebServerApplicationContext를 시작할 수 없습니다.
테스트 클래스 : -
@RunWith(SpringRunner.class)
@SpringBootTest(classes = { WebsocketSourceConfiguration.class,
WebSocketSourceIntegrationTests.class }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {
"websocket.path=/some_websocket_path", "websocket.allowedOrigins=*",
"spring.cloud.stream.default-binder=kafka" })
public class WebSocketSourceIntegrationTests {
private String port = "8080";
@Test
public void testWebSocketStreamSource() throws IOException, InterruptedException {
StandardWebSocketClient webSocketClient = new StandardWebSocketClient();
ClientWebSocketContainer clientWebSocketContainer = new ClientWebSocketContainer(webSocketClient,
"ws://localhost:" + port + "/some_websocket_path");
clientWebSocketContainer.start();
WebSocketSession session = clientWebSocketContainer.getSession(null);
session.sendMessage(new TextMessage("foo"));
System.out.println("Done****************************************************");
}
}
나는 여기에서도 같은 문제를 보았지만 아무것도 도움이되지 못했다. 내가 뭘 놓쳤는지 알 겠어?
종속성 계층 구조에서 컴파일 시간 종속성으로 spring-boot-starter-tomcat이 있습니다.
해결법
-
==============================
1.이 메시지는 : ApplicationContext에 적어도 하나의 ServletWebServerFactory 빈을 설정해야합니다. 따라서 spring-boot-starter-tomcat이 이미있는 경우에는 해당 빈을 자동 구성하거나 수동으로 수행해야합니다.
이 메시지는 : ApplicationContext에 적어도 하나의 ServletWebServerFactory 빈을 설정해야합니다. 따라서 spring-boot-starter-tomcat이 이미있는 경우에는 해당 빈을 자동 구성하거나 수동으로 수행해야합니다.
따라서 테스트에는 applicationContext를로드하는 구성 클래스가 2 개뿐입니다.이 클래스는 = {WebsocketSourceConfiguration.class, WebSocketSourceIntegrationTests.class}입니다. 그런 다음 최소한 하나의 클래스에 원하는 인스턴스를 반환하는 @Bean 메서드가 있어야합니다. ServletWebServerFactory.
* 해결책 *
구성 클래스 내의 모든 bean을로드해야합니다.
WebsocketSourceConfiguration { @Bean ServletWebServerFactory servletWebServerFactory(){ return new TomcatServletWebServerFactory(); } }
또는 자동 구성을 사용하여 해당 빈의 클래스 경로 검색 및 자동 구성을 수행 할 수도 있습니다.
@EnableAutoConfiguration WebsocketSourceConfiguration
통합 테스트 클래스에서도 수행 할 수 있습니다.
@EnableAutoConfiguration WebSocketSourceIntegrationTests
자세한 내용은 SpringBootTest 주석 문서를 확인하십시오. https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/context/SpringBootTest.html
-
==============================
2.내가 다음과 같은 것을했을 때 나는 비슷한 문제에 직면했다.
내가 다음과 같은 것을했을 때 나는 비슷한 문제에 직면했다.
package radon; .. @SpringBootApplication public class Initializer { public static void main(String[] args) { SpringApplication.run(Config.class, args); } } package radon.app.config; @Configuration @ComponentScan({ "radon.app" }) public class Config { .. }
Initializer 패키지를 radon에서 radon.app로 변경하면 문제가 해결되었습니다.
-
==============================
3.이것은 스프링이 런타임에 특성 파일을로드 할 수 없기 때문에 스프링 프로파일을 사용하고 런타임에 (프로그램 또는 VM) 인수를 제공하지 않았기 때문에 (Java -jar application.jar) 프로파일의 VM 인수를 추가하여 나를 위해 문제.
이것은 스프링이 런타임에 특성 파일을로드 할 수 없기 때문에 스프링 프로파일을 사용하고 런타임에 (프로그램 또는 VM) 인수를 제공하지 않았기 때문에 (Java -jar application.jar) 프로파일의 VM 인수를 추가하여 나를 위해 문제.
java -jar -Dspring.profiles.active=dev application.jar
또는 프로그램 인수 사용
java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config
from https://stackoverflow.com/questions/48264118/spring-boot-test-fails-saying-unable-to-start-servletwebserverapplicationcontex by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 휴식, 봄 자신의 OAuth2 서버 + 페이스 북, 구글, 야후와 같은 OAuth2 공급자 (0) | 2019.03.16 |
---|---|
[SPRING] 경고 : 폐기 콜백을 등록 할 수 없습니다. (0) | 2019.03.16 |
[SPRING] 같은 클래스의 두 가지 다른 콩을 autowiring (0) | 2019.03.15 |
[SPRING] 포트 80에서 Spring Boot 애플리케이션을 실행하려면 어떻게해야합니까? (0) | 2019.03.15 |
[SPRING] Gradle을 사용하여 프로젝트에 AngularJs를 포함 할 수 있습니까? (0) | 2019.03.15 |