Post
KO

Setting up test class sharing across Gradle multi-modules

Gradle 멀티 모듈로 구성한 상태에서, 테스트 코드에 작성했던 클래스를 다른 모듈에서 공유를 하고 싶은 경우가 있는데, 이 방법에 대해 알아보았다.

Gradle에서는 이미 제공을 해주는 기능이였다.

그레들 컨벤션 : https://docs.gradle.org/current/samples/sample_convention_plugins.html

테스트 픽스쳐 : https://docs.gradle.org/current/userguide/java_testing.html#sec:java_test_fixtures

안타깝게도 현재 담당하고 있는 프로젝트에서는 적용시 build가 실패되는 현상이 있었다.

Execution failed for task ':api:kaptTestFixturesKotlin'. > Could not resolve all files for configuration ':api:_classStructurekaptTestFixturesKotlin'. > Failed to transform api-0.2239.999999-plain.jar to match attributes {artifactType=class-structure, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for StructureTransformAction: /Users/user/git/merchant-api/api/build/libs/api-0.2239.999999-plain.jar. > /Users/user/git/merchant-api/api/build/libs/api-0.2239.999999-plain.jar

방법을 찾아보긴 했지만, 잘 모르는 내용이라 다른 방법으로 찾아봤다.

공유하고자 하는 모듈의 build.gradle에 추가 configurations { create("test") } tasks.register("testArchive") { archiveBaseName.set("domain-test") from(project.the()["test"].output) } artifacts { add("test", tasks["testArchive"]) }

사용하고자 하는 모듈의 build.gradle에 추가

testImplementation(project('{공유 모듈명}', "test"))

이런 구성을 하니 손쉽게 공유가 가능했다.

This article is licensed under CC BY 4.0 by the author.