Maven 플러그인 테스트 - 현대적인 방식 - 6부
12347 단어 testingjavaprogrammingmaven
이전 부분에서 가져온 간단한 예를 살펴보겠습니다.
@MavenJupiterExtension
class BaseIT {
@MavenTest
@MavenGoal("verify")
void the_first_test_case(MavenExecutionResult result) {
...
}
}
이렇게 하면 Maven이 목표
verify
로 실행됩니다. 실생활에서 다음과 같은 프로필을 활성화해야만 통합 테스트를 실행하는 것이 합리적일 때가 있습니다.mvn verify -Prun-its
이제 질문은 다음과 같습니다. 통합 테스팅 프레임워크에서 어떻게 할 수 있습니까?] itf ? 이것은 다음과 같이
@MavenProfile
주석을 사용하여 달성할 수 있습니다.@MavenJupiterExtension
class BaseIT {
@MavenTest
@MavenGoal("verify")
@MavenProfile("run-its")
void the_first_test_case(MavenExecutionResult result) {
...
}
}
이렇게 하면 다음 명령줄과의 통합이 실행됩니다.
mvn verify -Prun-its
다음 예제에서는
@MavenProfile
주석이 메서드first
에서만 사용되는 것을 볼 수 있습니다.@MavenJupiterExtension
class BaseIT {
@MavenTest
@MavenGoal("verify")
@MavenProfile("run-its")
void first(MavenExecutionResult result) {
...
}
@MavenTest
void second(MavenExecutionResult result) {
...
}
@MavenTest
void third(MavenExecutionResult result) {
...
}
}
프로필이 없는
first
를 제외하고 위의 모든 통합 테스트 사례를 실행합니다.@MavenProfile
주석은 다음과 같이 다른 테스트 케이스 내에서 다른 프로파일을 실행하기 위해 다른 메소드에 넣을 수 있습니다.@MavenJupiterExtension
class BaseIT {
@MavenTest
@MavenGoal("verify")
@MavenProfile("run-its")
void first(MavenExecutionResult result) {
...
}
@MavenTest
void second(MavenExecutionResult result) {
...
}
@MavenTest
@MavenProfile("run-e2e")
void third(MavenExecutionResult result) {
...
}
}
위의 예는 주어진 프로필
third
이 명령줄에서 활성화된 테스트 사례run-e2e
와 물론 주어진 프로필first
이 있는 run-its
테스트 사례를 실행합니다.다음과 같이 클래스 수준에서
@MavenProfile
주석을 정의하여 달성할 수 있는 동일한 프로필로 많은 통합 테스트를 실행해야 하는 경우가 있습니다.@MavenJupiterExtension
@MavenProfile("run-its")
class BaseIT {
@MavenTest
@MavenGoal("verify")
void first(MavenExecutionResult result) {
...
}
@MavenTest
void second(MavenExecutionResult result) {
...
}
@MavenTest
void third(MavenExecutionResult result) {
...
}
}
이렇게 하면 동일한 프로필을 사용하여 세 가지 테스트 케이스를 모두 실행하게 됩니다. 이제 다른 시나리오에 대해 생각해 보겠습니다. 통합 테스트 세트를 정의했습니다(25개라고 가정)
위의 패턴을 기반으로 적절한 테스트 클래스를 만듭니다. 이제 클래스 수준에서 정의된 프로필을 사용하지 않아야 하는 단일 테스트 케이스를 추가해야 합니다. 다른 것을 사용해야 합니다.
이에 대한 두 가지 솔루션이 있습니다. 첫 번째는 클래스 또는 메서드 수준(취향의 문제)에서 적절한 프로필을 정의하는 별도의 통합 테스트 클래스를 만드는 것입니다. 다른 솔루션은 다음 예제와 같이 다른
@MavenProfile
주석이 있는 다른 테스트 케이스 메소드를 정의하는 것입니다.@MavenJupiterExtension
@MavenProfile("run-its")
class BaseIT {
@MavenTest
@MavenGoal("verify")
void first(MavenExecutionResult result) {
...
}
@MavenTest
@MavenProfile("run-somethingdifferent")
void second(MavenExecutionResult result) {
...
}
@MavenTest
void third(MavenExecutionResult result) {
...
}
}
결과는
first
프로필로 테스트 케이스third
및 -Prun-its
를 실행하고 second
테스트 케이스는 run-somethingdifferent
프로필로 실행됩니다. 즉, 정의된 프로필을 의미합니다.가산되지 않습니다. 이 개념의 한계에 대한 예를 보여드리겠습니다. 프로필 없이
second
테스트 케이스를 실행하고 싶다면 이것은 불가능합니다.이것은 대신 별도의 클래스를 정의해야 하는 솔루션으로 이어집니다.
그 외에도 다음과 같이 Maven 빌드에서 여러 프로필을 정의하는 것이 유용한 경우가 있습니다.
mvn -Prun-its,run-e2e
이것은 다음과 같이 적절한 테스트 케이스(또는 클래스 수준)에서 여러
@MavenProfile
주석을 사용하여 수행할 수도 있습니다.@MavenJupiterExtension
class BaseIT {
@MavenTest
@MavenGoal("verify")
@MavenProfile("run-its")
@MavenProfile("run-e2e")
void the_first_test_case(MavenExecutionResult result) {
...
}
}
따라서 시리즈의 이전 부분을 기반으로 조합을 더 쉽게 만들기 위해 고유한 메타 주석을 정의하는 것이 가능하다는 결론을 내릴 수 있습니다.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RUNTIME)
@Inherited
@MavenProfile("run-its")
@MavenProfile("run-e2e")
public @interface ExecuteIntegrationAndEndToEnd {
}
이것은
@MavenProfile
주석에 국한되지 않습니다. 시리즈의 이전 기사에서 언급했듯이 @MavenGoal
등과 같은 주석과 결합할 수 있습니다.이것은 파트 VI에 대한 것입니다. Integration Testing Framework에 대해 더 알고 싶다면 users guide 을 참조하십시오. 릴리스 상태를 알고 싶다면 release notes 을 살펴볼 수 있습니다.
아이디어, 제안 또는 발견된 버그가 있으면 file in an issue on github .
이전 예제를 보여주는 예제 프로젝트는 found on GitHub 입니다.
Reference
이 문제에 관하여(Maven 플러그인 테스트 - 현대적인 방식 - 6부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/khmarbaise/maven-plugin-testing-in-a-modern-way-part-vi-4b1d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)