2011-03-04 4 views
1

최근 dev 팀이 프로젝트 관리 및 빌드주기를 위해 Ant 빌드 파일을 Maven으로 옮겼습니다. 지금까지 나는 결과에 정말 만족합니다. 필자는 여전히 Maven을 이해하고 있으므로 비정상적인 빌드 요구 사항에 대한 대답을 준비하지 못했습니다.Maven의 서비스 공급자 인터페이스에 대한 유닛 테스트

이제 새로운 프로젝트를 만들었고 적절한 Maven 설정을 즉시 시작하기로 결정했습니다. 이 프로젝트는 실제로 Java Service Provider Interface (SPI)를 사용하여 플러그 가능한 구현을 검색하는 API입니다. 구현은 정규 META-INF/services/factoryname 방식으로 자신을 등록 할 수 있습니다. API는 대부분의 작업을 수행하지만 실제로 유용한 것을 얻으려면 구현이 필요합니다.

내 질문은 지금 : 어떻게 단위 테스트를 작성합니까? 두 가지 방법이 염두에 왔습니다 :

  1. 테스트 패키지에 간단한 구현을 작성한 다음이를 단위 테스트에 사용하십시오. 이것은 Maven 프로젝트 라이프 사이클에 Weel을 적합하게 보이지 않습니다.

  2. 테스트 구현이 포함 된 별도의 프로젝트를 만듭니다. 이것은 SVN 저장소의 또 다른 항목을 의미하지만, 더 깨끗한 접근 방식처럼 느껴집니다. 이 프로젝트는 기본 API 프로젝트의 테스트 사이클에서 jar로 빌드되고 사용될 수 있습니다. 기본 프로젝트에서 테스트 범위가있는 종속 아티팩트로 나열 될 수 있습니다.

두 경우 모두 기본적인 문제가 있습니다. 구현시 기본 API가 컴파일되어야합니다. 결국 API의 추상 팩토리를 구현하는 팩토리 클래스가 있어야합니다. 그러나 주요 API, 테스트 단계 및 모든 기능을 제대로 구축하려면 테스트 구현이 필요합니다. 정말로 순환 종속성의 문제입니다.

Maven에서 이것을 처리하는 좋은 방법은 무엇입니까? Ant에서는 API와 테스트 사이에 구현을 구현할 것입니다. 도움이된다면 SPI를 약간 악용하여 단일 구현이 아닌 객체 모델 묶음을 찾습니다. 그것은 JAXP와 같지 않고 자원 등록 방법과 비슷합니다.

답변

1

정상 빌드 프로세스의 일부로 maven-jar-plugin을 사용하여 테스트 - jar를 생성 할 수 있습니다. 이 방법을 사용하면 한 번에 두 아티팩트를 생성 할 수 있습니다.