복붙노트

[SPRING] Spring 애플리케이션에서 junit 테스트를 실행하는 동안 h2 웹 콘솔에 액세스

SPRING

Spring 애플리케이션에서 junit 테스트를 실행하는 동안 h2 웹 콘솔에 액세스

스프링 애플리케이션을 구축 중이며 웹 브라우저에서 JUnit 테스트를 실행하는 동안 H2 메모리의 데이터베이스를 검사해야합니다.

스프링 구성에서 나는 데이터베이스 스키마를 생성하고 JUnit 테스트에서 사용할 몇 가지 데이터를 채우는 빈을 가지고있다. 또한 필자는 테스트 환경에서 필자가 데이터를 찾을 웹 서버를 만드는 빈을 추가했다.

<bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server"
    factory-method="createWebServer" init-method="start" lazy-init="false">
    <constructor-arg value="-web,-webAllowOthers,-webPort,11111" />
</bean>

데이터베이스가 제대로 채워 졌기 때문에 JUnit 테스트와 H2 서버에서 데이터에 액세스 할 수 있기 때문에 모든 것이 정상인 것처럼 보입니다. 테스트 단계에있는 동안에 만 실행됩니다 (my_ip에 액세스하려고하면 알 수 있습니다. 111111 테스트를 디버깅하기 전에 연결할 수는 없지만 테스트를 시작한 후에는 연결할 수 있습니다.)

어쨌든 웹 브라우저에서 H2 콘솔을 열면 스키마가 표시되지 않습니다. 어떤 아이디어?

많은 감사합니다 !!

해결법

  1. ==============================

    1.이것은 아마도 테스트 디버깅 기능이 될 것이므로 런타임에 @Before와 함께 추가 할 수 있습니다.

    이것은 아마도 테스트 디버깅 기능이 될 것이므로 런타임에 @Before와 함께 추가 할 수 있습니다.

    import org.h2.tools.Server;
    
    /* Initialization logic here */
    
    @Before
    public void initTest(){
        Server webServer = Server.createWebServer("-web", 
                                        "-webAllowOthers", "-webPort", "8082");
        webServer.start();
    }
    

    그런 다음 http : // localhost : 8082 /

  2. ==============================

    2.나중에 참조 할 수있는 또 다른 방법이 있습니다.

    나중에 참조 할 수있는 또 다른 방법이 있습니다.

    H2 용 Jar 파일은 https://mvnrepository.com/artifact/com.h2database/h2에서 다운로드 할 수 있습니다.

    서버는 snovelli의 응답과 같이 @Before를 통해 테스트 파일에서 시작할 수 있습니다. 그러나 나중에 데이터베이스에 연결할 경우에만 문제가 될 수 있습니다.

  3. ==============================

    3.문제는 응용 프로그램에서 직접 h2db에 연결한다는 것입니다. Bean으로 시작하는 서버가 아닙니다. 이 때문에 앱과 h2db-web-interface는 하나의 메모리 내장 데이터베이스를 공유 할 수 없습니다.

    문제는 응용 프로그램에서 직접 h2db에 연결한다는 것입니다. Bean으로 시작하는 서버가 아닙니다. 이 때문에 앱과 h2db-web-interface는 하나의 메모리 내장 데이터베이스를 공유 할 수 없습니다.

    테스트에서 jdbcUrl을 jdbc : h2 : tcp : // localhost / mem : my_DB; DB_CLOSE_DELAY = -1; MODE = Oracle으로 변경해야하며 브라우저에서 동일한 URL에 연결해야합니다.

    jdbc : h2 : tcp : // localhost / ...와 같은 jdbc URL을 사용하면 모든 연결이 h2db-server를 통해 진행되며 브라우저에서 데이터베이스 상태를 볼 수 있습니다.

  4. from https://stackoverflow.com/questions/12390116/access-to-h2-web-console-while-running-junit-test-in-a-spring-application by cc-by-sa and MIT license