테스트없이 Maven 패키지 / 설치 (건너 뛰기 테스트)


343

내 프로젝트를 패키지하려고합니다. 그러나 이전에 패키징을 수행하는 테스트를 자동으로 실행합니다. 테스트는 데이터베이스에 일부 내용을 삽입합니다. 이것은 내가 원하는 것이 아닙니다. 응용 프로그램을 패키지하는 동안 테스트를 실행하지 않아야합니다. 아무도 테스트하지 않고 패키지를 실행하는 방법을 알고 있습니까?


13
단위 테스트는 초기화, 테스트, 검증 및 테어 다운의 4 단계로 구성되어야합니다. 테스트를 조정하고 이에 따라 데이터베이스의 분류 / 정리를 추가하거나 테스트를 실행하기 위해 jar 파일과 함께 패키지되지 않은 별도의 데이터베이스 인스턴스를 사용해야 할 수도 있습니다.
Marc-Christian Schulze

귀하의 테스트는 "무거운"것으로 보이므로 실행하고 싶지 않습니다. 그러나 나쁜 습관입니다. DBUnit과 같은 일부 프레임 워크가 도움이 될 수 있습니까? 아니면 테스트가 끝날 때 데이터베이스 변경 사항을 되돌릴 수 있습니까?
Mickael Marrache

답변:


575

로 maven을 실행

mvn package -Dmaven.test.skip=true 

1
즉시 답변 해 주셔서 감사합니다. Eclipse에서 실행 중입니다. 여기서 -Dmaven.test.skip = true 명령을 추가하십시오.
vks

10
나는 일식에서 mvn을 시작한 적이 없지만 maven의 대상과 프로파일을 구성하는 구성 실행 창에는 '건너 뛰기 테스트'확인란이 있습니다. 어쩌면 그 트릭을 할 것입니다.
Giorgos Dimtsas

9
실행뿐만 아니라 컴파일을 건너 뛸 문서 에 따르면 . -DskipTests를 사용하여 실행을 건너 뛸 수 있습니다. 이 게시물 은 또한 각 플래그를 사용할 수있는 버전에 대한 경고를 제공합니다.
JonnyRaa

1
고마워요, 나는 그것을 사용 -DskipTests했지만 그것을 더 이상 작동하지 않습니다.
sam

7
참고 것을 메이븐 확실한 플러그인메이븐 안전 장치 플러그인 내용은 해당 설정이 시사하는 skipTests설정이 바람직하다 maven.test.skip.
Filip Bártek

172

테스트 케이스 실행을 무시하는 아래 언급 된 명령 만 제공하십시오.

mvn package -DskipTests

4
나를 위해 이것은 작동하지 않을 것입니다. 대신 승인 된 솔루션을 사용해야했습니다
Sebas

1
-DskipTests내가 사용할 때 나를 위해 작동하지 않았다mvn clean install -DskipTests
Vishrant

1
그것은 테스트를 실행하지 않기 때문에 부분적으로 괜찮지 만 테스트 클래스를 컴파일합니다 .....
Antoniossss

팔로워의 경우 stackoverflow.com/a/21933970/32453-DskipTests동일하며 테스트를 컴파일하고 실행 하지 않습니다 (컴파일하지 않은 경우)-Dmaven.test.skip.exec=true -Dmaven.test.skip=true
rogerdpack

47

명령 행 arg를 설정하지 않으려면이 플러그인 구성을 pom에 추가 할 수 있습니다.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
이 구성의 명령 줄에서 더 이상 테스트를 실행할 수 없습니다.
Emmanuel Bourg

1
@EmmanuelBourg이 예제의 지시에 따라 해결할 수 있습니다 maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d


41

-Dmaven.test.skip는 Maven이 테스트 jar 아티팩트를 빌드하지 못하게합니다.

테스트를 건너 뛰고 일반 빌드에 따라 아티팩트를 작성하려면 다음을 사용하십시오.

-Dmaven.test.skip.exec

1
이것은 내가 찾던 안식처였으며 잘 작동합니다. 감사합니다.
Binita Bharati

내가 그걸 어떻게 기억해야합니까? "skipTests"와 같이 간단하고 기억하기 쉬운 별칭을 만드십시오.
TheRealChx101

32

Windows Powershell에서이 작업을 시도하면 다음 오류가 발생합니다.

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

그 이유는 Powershell에서 " -"은 특별한 의미를 가지며 maven에 문제를 일으키기 때문입니다.

해결책은 백틱 (`)을 앞에 붙이는 것입니다.

mvn `-Dmaven.test.skip=true install 

참조 : http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
나는 같은 문제가 있었고 이것이 나를 위해 해결했다. 고마워.
nsof

26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

또한 pom 파일에 추가하는 방법입니다


18

maven.test.skip패키지 단계 (및 기본 라이프 사이클의 이전 단계)가 실행될 때 실행중인 테스트를 건너 뛰기 위해 플래그를 JVM 인수로 전달할 수 있습니다 .

mvn package -Dmaven.test.skip=true

skipTests플래그를 mvn 실행 파일에 단독으로 전달할 수도 있습니다 . 당신이 당신의 POM에이 정보를 포함 할 경우, 당신은 당신이를 구성 할 수있는 새로운 프로필을 만들 수 있습니다 maven-surefire-plugin검사를 생략을 .



13

Inllij IDEA에는 테스트 목표를 건너 뛰는 옵션도 있습니다.

여기에 이미지 설명을 입력하십시오


11

오래되고 받아 들여진 질문에 대한 대답. 명령 행 인수를 항상 전달하지 않으려면 pom.xml에 이것을 추가 할 수 있습니다.

  <properties>
    <skipTests>true</skipTests>
  </properties>

11

당신도 추가 할 수 있습니다 -DskipTests또는 -Dmaven.test.skip=true하나에 mvn검사를 생략하기위한 명령. 귀하의 경우 다음과 같습니다.

mvn package -DskipTests

또는

mvn package -Dmaven.test.skip=true


4

테스트는 항상 패키지 전에 실행해야합니다 [1]. 테스트를 꺼야 할 경우 문제가있는 것입니다. 즉, 잘못된 문제를 해결하려고합니다. 문제가 실제로 무엇인지 파악하고 그 질문을하십시오. 데이터베이스와 관련된 것 같습니다.

[1] 로컬, 개발 용으로 아티팩트를 빠르게 생성해야하는 경우 테스트를 건너 뛸 수 있지만 일반적으로 아티팩트 작성은 항상 성공적인 테스트 실행을 따라야합니다.


비슷한 문제가 있습니다. 응용 프로그램에 웹 소켓이 포함되어 있습니다. mvn clean install을 실행하면 끝없는 테스트 시리즈가됩니다. 강제 종료하기 전에 프로세스가 3 시간 동안 진행되었으며 인쇄 된 메시지는 Websocket에 관한 것입니다. 내 문제를 확인하여 내가 뭘 잘못하고 있는지 확인할 수 있습니까? stackoverflow.com/questions/54614739/…
georgeB

규칙에는 항상 예외가 있습니다. 그렇게 생각하지 않으면 틀린 것입니다.
Jay Sullivan

3

maven 빌드 및 건너 뛰기 테스트를 수행하는 속기 표기법은 다음과 같습니다.

mvn 새로 설치 -DskipTests


2

maven 테스트를 감염시키지 않은 maven 패키지의 경우 :

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

고마워, 나는 오늘 이것을 정확히 필요로했다.
Sean McMillan 19 :

1

당신은 분명히 잘못된 길을 가고 있습니다. 테스트는 사전 포장의 중요한 부분입니다. 무시하거나 건너 뛰지 말고 올바른 방법으로 수행하십시오. 데이터를 삽입 할 데이터베이스 (예 : test_db)를 변경하십시오. 설정하는 데 시간이 걸릴 수 있습니다. 이 데이터베이스를 영원히 사용할 수 있으려면 테스트가 끝날 때까지 모든 데이터를 삭제해야합니다. JUnit4에는 주석이있어 쉽게 사용할 수 있습니다. 올바른 방법으로 @Before, @After @Test 주석을 사용하십시오. 당신은 그것에 시간을 할애해야하지만, 그만한 가치가 있습니다!


9
테스트를 실행하지 않고 패키지하려는 욕구뿐만 아니라 질문도 완벽하게 유효하다고 생각합니다. OP가 "분명히 잘못하고있다"고 생각하지 않습니다. 사람과 프로젝트마다 요구 사항이 다르며, 일반적으로 소프트웨어 개발의 작동 방식에 대한 Maven 성경이나 다양한 사람들의 신념과 일치하지 않습니다. 나는 당신의 대답이 모호한 접근 방식없이 더 높이 평가 될 것이라고 생각합니다.
Zero3

1

Intellij에서보기-> 도구 창으로 이동하여 Maven 프로젝트를 선택하십시오. Lifecyle 드롭 다운에서 패키지를 마우스 오른쪽 버튼으로 클릭하고 '프로젝트 [패키지]'생성 ...을 선택합니다.

package -Dmaven.test.skip=true -f pom.xml명령 행 필드 에이 값을 입력하십시오 . 적용을 클릭하면 생성 된 사용자 지정 maven 명령과 함께 Run Configurations 드롭 다운 메뉴가 나타납니다.


이것이 왜 다운 보트입니까? 프로젝트를 빌드하고 싶었지만 테스트를 건너 뛰고 싶을 때마다 이것을 사용합니다.
Patrick Tolentino

0

mvn clean install -Dmaven.test.skip=true

-Dskip더 이상 작동하지 않았기 때문에 나를 위해 일했습니다 .



-1

가장 쉬운 방법은 IntelliJ Idea의“Maven Project”창에서 테스트 버튼을 클릭하지 마십시오. 나는 당신을 도왔기를 바랍니다. 좋은 하루 되세요 :)


1
패키지를 클릭하면 테스트가 실행되며 OP는 피하려고합니다.
Charlie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.