Programing

다중 모듈 maven 프로젝트에서 모듈 간에 src/테스트 클래스 공유

c10106 2022. 5. 9. 21:31
반응형

다중 모듈 maven 프로젝트에서 모듈 간에 src/테스트 클래스 공유

나는 다중 모듈 메이븐 프로젝트를 가지고 있다.이 예를 위해 두 가지 모듈을 고려하십시오.

  • data
  • consumer

모듈consumer에 모듈이 있음data의존으로

모듈data다수의 핵심 계층을 선언하다아래에는 테스트가 있다.src/test그것들을 사용하는 것.이 테스트들은 장문의 물체 생성을 필요로 하기 때문에 나는 이 물체들을 만들기 위한 몇 가지 효용 방법이 있는 클래스를 가지고 있다.이 유틸리티 클래스(SampleDataHelper)은 에 있다.src/test위계질서의

나는 또한 몇 가지 시험이 있다.consumer이 장문 물체들 중 일부를 만들어야 하는 모듈.나는 내 것을 사용하고 싶다.SampleDataHelper등급(에 정의됨)data src/test)은(는) 내 테스트에 있음consumer src/test도도도 도 비록dataconsumer consumer아래 있는 클래스를 볼 수 없음data src/test.

이에 맞서기 위해 또 다른 모듈을 만들지도 모른다는 생각이 들었다.data-test() 및 이동SampleDataHelper그 밑에그러면 나는 다음을 포함시킬 것이다.data-test테스트 범위 의존성으로서data불행히도, 이것은 순환 종속성을 도입한다.data사용하다data-test그렇지만data-test또한 필요하다.data.

내가 생각해 낸 유일한 해결책은 자리를 잡는 것이다.SampleDataHelper밑에data src/main의 밑에test패키지 및 실제 애플리케이션 코드가 이 코드를 호출하지 않기를 바란다.

어떻게 하면 내 마음을 나눌 수 있을까?SampleDataHelper하단에 넣지 않고 모듈 사이를 등급으로 나누다.src/main?

당신의 소비자 프로젝트는 당신의 데이터 프로젝트에 달려있다. 그러므로 우리는 데이터가 소비자보다 먼저 작성되어야 한다는 것에 기쁘다.따라서 코멘트에 제시된 기법을 사용하여 데이터 프로젝트에 공유하려는 모든 테스트 코드가 포함되어 있는지 확인하고 POM을 구성하여 테스트 JAR을 생성하십시오.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.2</version>
  <executions>
    <execution>
      <goals>
        <goal>test-jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

그러면 일반 데이터 JAR 아티팩트와 추가 데이터 모두에 따라 소비자 프로젝트가 결정됨test-jar물론 테스트 범위가 포함된 아티팩트:

<dependency>
  <groupId>com.foo</groupId>
  <artifactId>data</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

나는 이 방법을 여러 번 사용해 보았는데 효과가 좋다.

그래서 문제는 앞으로 (일부) 시험이 있다는 것이다.data모듈은 에 의존한다.SampleDataHelper 너 수표 수 ? 너는 교실을 옮길 수 있다.SampleDataHelper로 분류하다.src/maindata-test모듈, 동시에 (특정 클래스에 따라 다름) 테스트를 (으)로 이동시키는 경우src/testdata-test 따라서 더 이상 순환 종속성이 없을 것이다.

참조URL: https://stackoverflow.com/questions/14722873/sharing-src-test-classes-between-modules-in-a-multi-module-maven-project

반응형