2016-10-11 4 views
2

spring boot:run 명령을 사용하여 빌드하고 배포하는 동안 스프링 부트 응용 프로그램에 대한 단위 테스트를 어떻게 실행할 수 있습니까?스프링 부트가 단위 테스트를 실행하지 않습니다.

내 기대는 응용 프로그램을 실행하기 전에 모든 내 단위 테스트를 실행하는 것입니다. 그러나 이전에 mvn test과 같은 다른 maven 명령을 만들고 싶지 않습니다.

내 문제 : 간단한 스프링 부트 응용 프로그램을 만들었으며 intellij 또는 명령 줄에서 응용 프로그램을 실행하는 동안 단위 테스트를 실행할 수있는 방법을 찾지 못했습니다. 첫째로 나는 아마도 테스트 구성이나 잘못된 프로젝트 구조의 잘못된 구성이나 잘못된 이름을 가지고 있을지도 모른다고 생각했습니다. 그래서 intellij 템플릿에서 봄 부팅 응용 프로그램을 만들었습니다. 내 행복에는 이미 기본 테스트가 작성되어 단순히 응용 프로그램을 실행했습니다. 유감스럽게도 시험은 실시되지 않았습니다.

이것은 intellij가 만든 프로젝트 구조, pom.xml, 기본 클래스 및 단위 테스트의 스크린 샷입니다. Project created by intetelij

테스트 러너를 변경하고 테스트가 실패하고 다시 시도했습니다. 같은 결과. "이전에 자신을 실행에 테스트가 컴파일 라이프 사이클 단계의 실행을 호출합니다." unit test changed to fail

는 여기 spring boot:run 명령 http://docs.spring.io/spring-boot/docs/current/maven-plugin/run-mojo.html

내가 설명서의 상단에 뭔가 흥미로운 것을 발견 아래에 숨겨져있는 것을 봤 그래서이 명령은 테스트를 컴파일 만하고 실행하지는 않는다는 것을 이해합니다. 그렇다면 질문은 - 명령에 플래그를 추가하여 "테스트"단계를 추가 할 수 있습니까?

최고 감사합니다,

마이클 여기

+1

당신은 완전히 사용할 수없는 것을 얻기를 원합니다. 생산적인 코드는 테스트 코드 중 하나입니다. 봄 부팅은 생산적 코드 만 사용합니다. 일반적으로 빌드/배포 프로세스 중에 생산 코드의 정확성을 확인하기 위해 단위 테스트를 사용합니다. 왜 당신은 생산 현장에서 단위 테스트를하고 싶습니까? 여기 뭔가 잘못 이해했을 수도 있습니다. – Heri

+0

어쩌면 내 문제를 명확하게 진술하지 않았을 수도 있습니다. 내가 찾고있는 유일한 방법은 일반적인 봄 부팅 응용 프로그램을 실행하기 전에 단위 테스트를 실행하는 것입니다. 모든 maven 프로젝트를 위해 방금 mvn을 새로 설치하고 테스트를 실행 한 후 응용 프로그램을 배포했습니다. 이제 나는 똑같이하고 싶다. 'spring boot : run'을 사용하여 스프링 부팅 응용 프로그램을 실행할 때까지는 모든 프로젝트가 먼저 배포되기 전에 컴파일됩니다. 앱을 배포하기 전에 단위 테스트를 실행할 수 있습니까? 나는'spring boot : run' 전에'mvn test'를 실행할 수 있다는 것을 알고 있지만, 하나의 명령을 사용하여 그것을 할 수 있는지 궁금합니다. – www

+1

'mvn test spring-boot : run'을 실행하는 것을 멈추게할까요? IntelliJ에서는 실행시킬 Maven Run 구성을 생성 할 수 있습니다. – jny

답변

4

귀하의 문제가 받는다는 수명주기와 함께 할 것입니다. spring-boot:run에 대한 docs에 따르면 기본적으로 라이프 사이클 단계 validate에 바인딩하고 실행하기 전에 test-compile 단계를 호출합니다.

은 애플리케이션을 실행하기 전에 테스트를 실행해야합니다. POM에서 다음과 같이 커스텀 메이븐 프로파일을 사용하면됩니다. 당신의 POM에

이와
<project> 
    <profiles> 
     <profile> 
      <id>test-then-run</id> 
      <build> 
       <defaultGoal>verify</defaultGoal> 
       <plugins> 
        <plugin> 
         <groupId>org.springframework.boot</groupId> 
         <artifactId>spring-boot-maven-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>spring-boot-run</id> 
           <phase>verify</phase> 
           <goals> 
            <goal>run</goal> 
           </goals> 
           <inherited>false</inherited> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
     ... 
    </profiles> 
... 
</project> 

를, 당신은 다음 테스트를 실행하여 응용 프로그램을 시작할 수 :

mvn -P test-then-run 

이 있음을 의미 대신 validate 단계의 verify 단계에 run 목표를 결합 테스트가 먼저 실행됩니다. 여기서 어떤 단계가 실행되는지 알 수 있습니다 : https://maven.apache.org/ref/3.3.9/maven-core/lifecycles.html

0

응용 프로그램을 실행하기 전에 mvn test를 사용할 수 있다는 것을 알고있었습니다. 사실 그것은 intellij에서 여러 가지 방법으로 얻을 수 있습니다. 나를 위해, 난 그냥 시작 응용 프로그램 전에 MVN 목표 테스트를 추가

image

스프링 부팅 구성을 인 IntelliJ에. 물론 다르게 수행 될 수 있습니다.

나는 어떻게 든 스프링 부트를 조작 할 수 있는지 궁금했다. 같은 결과를 얻지 만 불가능한 플래그 나 sth를 사용하여 명령을 실행한다.

olambert 답장을 보내 주셔서 감사합니다. 잘 작동합니다.

+0

답변에 만족하면 모든 유용한 답변을 upvote하고 가장 좋은 답변을 수락하십시오. –

+0

unfortunatelly 내 upvotes가 공개적으로 표시되는 데 충분한 평판 포인트가 없습니다. :) – www

+0

실제로 15 명이 필요합니다. https://stackoverflow.com/help/whats-reputation 몇 가지 의미있는 편집 (오타, 태그, 형식 수정)을하면 1535 명의 평판이 필요합니다. https://stackoverflow.com/help/whats-reputation 답변 질문은 더 좋습니다 :) StackOverflow를 사용하여 행운을 빌어 요! –

관련 문제