2011-01-18 5 views
2

저는 부모 프로젝트와 몇 개의 하위 프로젝트로 구성된 봄 프로젝트가 있습니다. 빌드는 Maven 기반이며 지속적인 통합 서버는 hudson입니다.단위 테스트 - 조언이 필요합니다.

단위 테스트가 실행되는 방식을 선택해야합니다. 현재 에는 몇 가지 좋고 아주 적은 쓰레기 junit 테스트가 있습니다. 시간이 많이 걸리므로 아이 프로젝트의 테스트 패키지를 엉망으로 만들지 말자. 나는 모든 주니어와 마지막이지만 적어도 게으른 사람에게는 익숙하지 않다. 나는 게으르다.

내 질문은 :

  1. 은 내가 받는다는 - 확실한 - 플러그인을 사용하여 테스트 패키지에 무거운 정리를해야합니까?
  2. hudson (빌드중인 프로젝트의 pom.xml이 아님)에게 특정 유닛 테스트를 실행하고 다른 유닛 테스트를 무시하도록하는 방법은 무엇입니까?
  3. 다른 빌드 (ant?)를 만들어 hudson에서 단위 테스트를 실행하는 데 사용해야합니까?
  4. 시장에서 내가 알고있는 다른 옵션으로 좋은 옵션이 있습니까?

어떤 조언을 주시면 감사하겠습니다.

aviad

답변

4
  1. 은 내가 받는다는 - 확실한 - 플러그인 를 사용하여 테스트 패키지에 무거운 정리를해야합니까?
  2. 은 허드슨에게 말할 수있는 방법입니다 ( pom에 포함되지 않음).프로젝트의 xml) 특정 단위 테스트를 실행하고 다른 프로젝트를 무시합니까? 당신은 단지 하나의 모듈 프로젝트에 단위 테스트를 실행하려면

, 당신은

mvn test 

모든 maven lifecycle phases 최대 compiletest-compile 포함 test에 (당신이 할 수 실행되도록 할 수 있습니다 built-in lifecycle bindings에서 surefire:test 목표는 test 단계에서 실행됩니다.

mvn test -Dtest=Funky*Test 

(이 Funky로 시작하는 모든 테스트 클래스를 실행하고 Test로 끝납니다)

: 당신이 실행하는 단위 테스트를 제한하려는 경우 지금, 당신은 test 매개 변수를 사용하여 surefire:test 플러그인 실행을 구성 할 수 있습니다

여러 개의 포함 및 제외를 원할 경우 불행히도 명령 줄 구성이 제한되어 있으므로 일부 XML 구성을 수행해야합니다. 나는 허드슨위한 전용 프로필을 사용하는 것이 좋을 것 :

<profiles> 
    <profile> 
     <id>hudson</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.6</version> 
        <configuration> 
         <includes> 
          <include>**/TestA.java</include> 
          <include>**/Funky*Test.java</include> 
          <include>**/Test**.java</include> 
         </includes> 
         <excludes> 
          <!-- overrides above include --> 
          <exclude>**/TestButNotMe.java</exclude> 
         </excludes> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

지금이처럼 허드슨 통화 받는다는 할 수 있습니다 답변에 대한

mvn -Phudson test 
+0

감사합니다. 그것은 도움이되었습니다. (투표를하지 않아서 죄송합니다. 내 평판은 여전히 ​​<15입니다.) – aviad

+0

@aviad 환영합니다. –

+0

저는 명령 줄 구문에서 P와 프로필 이름 사이에 공백이 있어야합니다. – Ralph

3

1) 내가 받는다는 - 확실한 - 플러그인을 사용하여 테스트 패키지에 무거운 정리를해야합니까?

2)는 (프로젝트의 pom.xml 파일에서 특정 단위 테스트를 실행하고 다른 사람을 무시하는) 내장되지 허드슨을 알 수있는 방법인가?

JUnit을 사용하고 있는지는 알 수 없습니다. 그러나 버전 4.7, 4.6, 4.5 ...의 "숨겨진"기능을 확인할 수 있습니다 (릴리스 노트에서 찾을 수있는 기능이 많이 있습니다). 당신이 필요로하는 것이 아무것도 없다면, 당신은 스스로 프로그램 할 수 있습니다. (시스템 속성을 확인하고 테스트를 건너 뜁니다).

3) 내가 다른 빌드 (ant?)를 만들어 hudson에서 단위 테스트를 실행하는 데 사용해야합니까?

이것은 pom에서 sprecifiying하는 것과 같습니다. 하지만 제 개인적인 혼합에서 개미와 메이븐은 당신이 할 수있는 가장 힘든 일 중 하나입니다.

4) 시장에서 내가 알지 못하는 다른 옵션으로 좋은 옵션이 있습니까?

TestNG을 살펴보십시오.

+0

감사합니다. – aviad

+0

나는 testng에 관해서 보았다. .. promissing 해 보인다. 당신은 스프링과 얼마나 쉽게 통합되는지 알고 있습니까? (이 답변을 찾지 못했습니다) – aviad

+0

@aviad JUnit (especialy 4.x)은 Spring에 쉽게 통합되어 있습니다. @RunWith (SpringJUnit4ClassRunner.class) 및 @ContextConfiguration ("context.xml")을 테스트 케이스에 콩을 주입 할 수 있습니다. - 질문이 있으시면 의견을 쓰는 대신 새로운 질문을 만드십시오. - 내 대답이 마음에 들면 자유롭게 투표하십시오. – Ralph

관련 문제