2012-06-11 3 views
4

Maven에서는 소스 코드가 변경된 경우에만 JUnit 테스트가 실행되도록 지정하는 방법이 있습니까?조건부로 Maven의 JUnit 테스트를 실행하십시오.

는 예를 들어, 내가 어떤 테스트가 실행되지 것을 원합니다 이제 (마지막 컴파일 아무런 변화가 없었다 때문에) 어떤 코드가 컴파일되지 않았다부터 -이 메시지

[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ my_project --- 
[INFO] Nothing to compile - all classes are up to date 

를 참조하십시오. 이것이 가능한가?

+0

코드가 변경되지 않았는지 질문 할 수 있습니다. 왜 컴파일 목표를 실행하고 있습니까? –

+0

여기에는 2 가지 일이 있습니다. 1 - 여러 프로필을 가진 프로젝트가 있습니다. 각 프로파일은 전쟁에 패키지화 될 다른 설정 파일을 가지고 있지만,이 설정 파일 중 어느 것도 테스트에 사용되지 않습니다 (테스트는 자체 모의 설정 파일을 가지고 있습니다). 이런 이유로, 일단 시험이 1 개의 구조 건축을 위해 통과하면, 모두를 위해 통과 할 것이다. 빌드 된 각 프로파일에 대해 테스트를 수행 할 필요가 없습니다. 2 - 다중 모듈 빌드를 설정하려고합니다. 모듈이 변경 될 때마다 빌드가 실행될 때마다 모든 테스트가 실행됩니다 (심지어 w/0 변경 모듈). – Vinnie

+0

알았어. 필자는 config 체크인 후 테스트가 실행되어서는 안되는 경우 config 및 코드가 동일한 다중 모듈 빌드의 일부가되어서는 안된다고 주장 할 수 있습니다. 나는 그것이 당신을 도울 수 없다는 것을 깨닫는다! 어쩌면 빌드를 3로 나눌 수 있습니다. 소스 코드 변경에 의해 트리거되는 코드 용 BuildA는 항상 테스트를 실행합니다. 구성 전용 BuildB. 그리고 A 또는 B 빌드에 의해 트리거되는 webapp의 BuildC. BuildC는 A와 B의 빌드 된 아티팩트 만 사용하므로 컴파일/테스트를 트리거하지 않습니다. –

답변

1

프로젝트 설정은 별도의 모듈로 분리해야합니다. 그러나 그렇게 할 수 없다면 테스트를 실행하지 않을 프로필에서 maven.test.skip 속성을 설정할 수 있습니다. more about skipping tests on the site을 참조하십시오.

당신은 전쟁 프로젝트에 대해 이야기하고 있습니다. 일반적으로 전쟁 프로젝트에는 코드가 없어야하지만, html, jsp, css, java 스크립트 및 Java 코드가 포함 된 번들 jar 프로젝트와 같은 구성 및 구성 요소 만 있으면됩니다. jar 프로젝트에는 코드가 있습니다. 통합 테스트를 수행하는 경우 별도의 모듈에 통합 테스트를 수행하는 것이 좋습니다.

다른 war 구성은 프로필에 있거나 잠재적으로 별도의 모듈에 포함될 수 있습니다.이 구성 요소는 war 플러그인의 war 오버레이 기능을 사용합니다.

+0

왜 단위 테스트를 테스트중인 코드와 다른 모듈로 나누고 싶습니까? 그것은 좋은 생각처럼 보이지 않습니다. 코드가 변경 될 때 자동으로 테스트를 실행하는 방법을 보지 못했지만 실행하지 않는 방법도 있습니다. – Vinnie

+0

명확한 답변을 편집했습니다. –

관련 문제