Android 프로젝트의 JUnit5

Feb 13 2023
새로운 안드로이드 프로젝트를 생성할 때 junit4는 자동으로 얻게 되는 의존성입니다. 그러나 JUnit5는 차세대 JUnit이므로 기본 JUnit4 종속성을 반짝이는 새 JUnit5로 마이그레이션하지 않는 이유는 무엇입니까? 그런 다음 JUnit5의 멋진 기능 중 일부를 살펴볼 수 있습니다.

새 Android 프로젝트를 만들 때 junit4자동으로 종속성이 발생합니다. 그러나 JUnit5는 차세대 JUnit이므로 기본 JUnit4 종속성을 반짝이는 새 JUnit5로 마이그레이션하지 않는 이유는 무엇입니까? 그런 다음 JUnit5의 멋진 기능 중 일부를 살펴볼 수 있습니다.

참고: 새로 생성된 애플리케이션의 마이그레이션에만 집중하겠습니다. 이미 JUnit4 테스트가 있는 프로젝트가 있는 경우 JUnit5로 완전히 마이그레이션하기 위한 추가 단계가 있습니다 .

Unsplash에 있는 Julia Craice의 사진

JUnit4에서 JUnit5 마이그레이션

새로 생성된 Android 애플리케이션에는 테스트가 없으므로( assertEquals(4, 2 + 2)예제 테스트 제외) 계속해서 종속성 을 .testImplementation(“org.junit.jupiter:junit-jupiter:5.9.2”)

build.gradle(:앱)

Gradle을 동기화하면 @Test 주석을 교체하고 가져오기를 어설션할 수 있습니다.

그러나 이전 가져오기를 제거하고 테스트를 실행하려고 하면 다음 오류와 함께 실패합니다.

androidJUnit5를 작동시키기 위한 두 번째이자 마지막 터치는 build.gradle의 범위 에 다음 코드를 추가하는 것입니다 .

build.gradle(:앱)

참고: testOptions의 " Android Plugin DSL Reference " 를 살펴보십시오 . 훌륭한 자원입니다.

이제 ExampleUnitTest통과해야 합니다.

JUnit5의 멋진 기능

여러 값으로 테스트를 제공하려는 경우 @ParameterizedTest 가 찾고 있는 것입니다. 구현한 테스트는 제공한 각 소스에 대해 실행됩니다. 다음 테스트는 6번 실행됩니다. 문자열 값에 대해 4번 + null에 대해 1번 + 빈 문자열에 대해 1번.

매개변수화된 테스트를 위한 또 다른 유용하고 간단하며 강력한 주석은 @EnumSource 입니다 . 이 "인수 소스"에 대해 잘린 2개의 샘플 코드가 있습니다.

모두 실행하는 한 가지 방법

우리가 그들 모두에 대해 공유 규칙을 가질 정도로 공통적인 enum 클래스가 있을 때. @EnumSource는 이러한 종류의 시나리오를 테스트하려는 주석입니다.

위의 테스트는 enum 클래스의 속성에 대한 테스트입니다. enum 클래스를 사용하는 다른 함수에 대한 테스트도 할 수 있습니다. 주요 아이디어는 단일 테스트에서 모든 열거형 값을 다루는 것입니다.

Enum 클래스의 하위 집합

추가 속성이 있는 동일한 열거형 클래스가 있습니다.

JUnit5는 직관적인 방식으로 테스트할 특정 열거형 값을 대상으로 지정하는 데 도움이 됩니다.

열거형 이름의 문자열 값을 추가하기만 하면 됩니다.

@MethodSource를 확인하여 여러 매개변수와 @ValueSource에서 지원하지 않는 클래스의 객체를 전달하세요.

동적 테스트

이것은 Executables를 사용하는 테스터에게 더 많은 제어를 제공하므로 JUnit4에 중요한 추가 사항입니다. (물론 Kotlin에서 훨씬 보기 좋습니다. ) 실행 순서는 개인적으로 가장 좋아하는 순서입니다. 성능이나 이점에 대해 더 많이 말할 수 있으려면 더 많이 작업해야 합니다.

다음은 유용할 것으로 생각되는 샘플입니다.

현재 페이지의 UI 상태가 있는 뷰 모델이 있다고 가정해 보겠습니다. 테스트하려는 규칙은 현재 페이지가 10이 될 때까지 페이지 증가가 발생한다는 것입니다. 순서가 중요합니다. 동적 테스트가 우리에게 어떻게 도움이 되는지 봅시다.

따라서 간단한 @Test 주석으로 이 코드를 작성할 수도 있지만 흐름과 논리가 복잡해지면 s를 처리하는 것이 DynamicTest더 쉬울 것입니다. 제가 보기에는 상당히 깨끗해 보입니다.

내가 말했듯이 동적 테스트로 더 많은 실험을 해야 하지만 유망해 보입니다.

이제 새로 생성된 Android 프로젝트에 대한 JUnit5 테스트 작성을 시작하는 방법을 알았습니다 . 또한 @ParameterizedTest 주석이 매우 유용하고 작성하기 쉽다는 것도 알고 있습니다 . 마지막으로 단위 테스트 게임의 레벨을 높이려면 동적 테스트가 JUnit5에서 진행하는 방법이라는 것을 알고 계실 것입니다.

박수와 구독을 잊지 마세요. Android 개발의 단위 테스트에 대한 의견을 남기고 이 기사에 추가할 수 있었던 내용을 추가하십시오.