Back-end/Build (Gradle, Maven)

[Test Code, Gradle] 각 모듈에 Test Fixture를 공유하고 싶을 때

philo0407 2023. 12. 10. 19:22

 

소스 코드는 아래에 있습니다!
https://github.com/progress0407/E-Commerce-with-MSA-and-DDD

 

 

 

종종 멀티모듈 환경에서 테스트를 작성할때 이미 작성한 Test Fixture를 공유하고 싶을때가 있다

 

처음에는 아래처럼 단순히 testImplementation를 붙이면 공유가 가능하다고 생각했다

 

그렇게 해서는 되지가 않았다...

 

 

즉 위처럼 하면 안된다

 

 

이런 경우 test-fixture라는 plugin을 추가해서 해결할 수 있다

 

아래처럼 사용하면 된다

 

plugins {
    id 'java-test-fixtures'
}

 

 

나 같은 경우 common/general이 test-fixture의 기능까지 함께 담당한다

 

그리고 해당 모듈이 가져야할 dependecny는 testFixturesImplementation로 정의한다

 

dependencies {
    testFixturesImplementation 'io.rest-assured:rest-assured'
}

 

실제 예시

 

test-fixture의 기능이 필요한 다른 모듈에서는 아래처럼 정의한다

 

dependencies {
    testImplementation testFixtures(project(':common:general'))
}

 

실제 예시

 

 

 

참고

https://docs.gradle.org/current/userguide/java_testing.html#sec:java_test_fixtures

 

https://medium.com/@jojiapp/gradle-multi-module%EC%97%90%EC%84%9C-testfixtures%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C-%EC%A4%91%EB%B3%B5-%EC%A4%84%EC%9D%B4%EA%B8%B0-3a4737f574f

 

https://toss.tech/article/how-to-manage-test-dependency-in-gradle