Main Content

TestRunner를 확장하는 플러그인 작성하기

사용자 지정 플러그인 개요

TestRunnerPlugin 메서드에는 4개의 레벨, 즉 테스트 세션 레벨, 테스트 스위트 레벨, 테스트 클래스 레벨, 테스트 레벨이 있습니다. 각 레벨에서 메서드를 구현하여 테스트 실행을 확장합니다. 또한 테스트 스위트 레벨, 테스트 클래스 레벨 및 테스트 레벨에서 메서드를 구현하여 테스트 또는 테스트 픽스처(Fixture)의 생성(Creation), 설정(Setup), 해제(Teardown)를 확장합니다.

테스트 스위트 레벨, 테스트 클래스 레벨 및 테스트 레벨에서 reportFinalizedResult 메서드를 통해 테스트 실행기는 최종 테스트 결과를 보고할 수 있습니다. 나머지 테스트 콘텐츠가 결과를 더 이상 수정할 수 없는 경우 테스트 결과가 확정됩니다. 테스트 실행기는 각 테스트 레벨에서 reportFinalizedResult 메서드를 불러올 수 있는지 확인합니다. 테스트 세션 레벨에서 reportFinalizedSuite 메서드를 통해 테스트 실행기는 테스트 스위트가 완료되면 테스트 결과를 보고할 수 있습니다.

테스트 실행기는 서로 다른 메서드를 다음 그림과 같이 실행합니다.

TestRunnerPlugin methods organized into the test session, test suite, test class, and test levels

생성 메서드는 출력 인수가 있는 유일한 TestRunnerPlugin 메서드의 집합입니다. 통상적으로, 사용자는 해당 레벨의 테스트 콘텐츠에서 발생하는 다양한 이벤트를 수신하도록 생성 메서드를 확장하게 됩니다. TestCase 인스턴스와 Fixture 인스턴스는 모두 handle 클래스에서 상속되므로, addlistener 메서드를 사용하여 리스너를 추가합니다. 테스트 콘텐츠를 설정하고 실행하고 해제하는 메서드는 테스트 실행기의 테스트 콘텐츠 실행 방법을 확장합니다.

테스트 세션 레벨 플러그인 메서드 확장하기

테스트 세션 레벨의 TestRunnerPlugin 메서드는 테스트 실행기에 전달된 테스트 스위트의 실행 및 보고를 확장합니다. 이들 메서드는 runSession 메서드의 범위에 속합니다.

이 레벨의 실행 메서드 runTestSuite는 테스트 프레임워크가 테스트 실행기에 전달하는 전체 TestSuite 배열 중 일부의 실행을 확장합니다. reportFinalizedSuite 메서드는 runTestSuite에 의해 완료된 테스트 스위트의 보고를 확장합니다.

테스트 스위트 레벨 플러그인 메서드 확장하기

테스트 스위트 레벨의 TestRunnerPlugin 메서드는 공유 테스트 픽스처(Fixture)의 생성, 설정, 실행, 해제를 확장합니다. 이들 메서드는 runTestSuite 메서드의 범위에 속합니다.

메서드 유형runTestSuite의 범위 내에서 해당되는 테스트 레벨
생성 메서드createSharedTestFixture
설정 메서드setupSharedTestFixture
실행 메서드runTestClass
해제 메서드teardownSharedTestFixture

이 레벨에서 createSharedTestFixture 메서드는 출력 인수가 있는 유일한 플러그인 메서드입니다. 이 메서드는 테스트 클래스에 요구되는 각 공유 픽스처에 대해 Fixture 인스턴스를 반환합니다. 이러한 Fixture 인스턴스는 TestCasegetSharedTestFixtures 메서드 전체의 테스트에 사용할 수 있습니다.

이 레벨의 실행 메서드 runTestClass는 동일한 테스트 클래스나 동일한 함수 기반 테스트에 속하는 테스트 실행을 확장하고 테스트 클래스 레벨 플러그인 메서드에 대해 설명된 기능을 통합합니다.

테스트 클래스 레벨의 플러그인 메서드 확장하기

테스트 클래스 레벨의 TestRunnerPlugin 메서드는 동일한 테스트 클래스나 동일한 함수 기반 테스트에 속하는 테스트 스위트 요소의 생성, 설정, 실행, 해제를 확장합니다. 이 메서드는 테스트 실행기가 실행하는 전체 TestSuite 배열의 일부에 적용됩니다.

메서드 유형runTestClass의 범위 내에서 해당되는 테스트 레벨
생성 메서드createTestClassInstance
설정 메서드setupTestClass
실행 메서드runTest
해제 메서드teardownTestClass

이 레벨에서 createTestClassInstance 메서드는 출력 인수가 있는 유일한 플러그인 메서드입니다. 이 메서드는 클래스 레벨에서 생성된 TestCase 인스턴스를 반환합니다. 각 클래스에 대해, 테스트 프레임워크는 TestClassSetup 특성(Attribute)이나 TestClassTeardown 특성이 있는 모든 메서드에 인스턴스를 전달합니다.

테스트 클래스 설정은 ClassSetupParameter 특성이 있는 속성이 포함되어 있는 경우 파라미터화됩니다. 이 경우, 테스트 프레임워크는 클래스 설정 파라미터화에 지정된 횟수만큼 setupTestClass 메서드와 teardownTestClass 메서드를 실행합니다.

이 레벨의 실행 메서드 runTest는 단일 TestSuite 요소의 실행을 확장하고 테스트 레벨 플러그인 메서드에 대해 설명된 기능을 통합합니다.

테스트 프레임워크는 runTestClass 메서드 범위 내의 테스트 클래스 레벨에서 메서드를 실행합니다. TestClassSetup 코드는 성공적으로 완료되는 경우, TestSuite 배열의 각 요소에 대해 한 번씩 runTest 메서드를 불러옵니다. 각 TestClassSetup 파라미터화는 생성, 설정, 해제 메서드를 한 번 불러옵니다.

테스트 레벨 플러그인 메서드 확장하기

테스트 레벨의 TestRunnerPlugin 메서드는 단일 테스트 스위트 요소의 생성, 설정, 실행, 해제를 확장합니다. 하나의 Test 요소는 하나의 Test 메서드로 구성되거나 테스트가 파라미터화된 경우에는 하나의 테스트 파라미터화 인스턴스로 구성됩니다.

메서드 유형runTest의 범위 내에서 해당되는 테스트 레벨
생성 메서드createTestMethodInstance
설정 메서드setupTestMethod
실행 메서드runTestMethod
해제 메서드teardownTestMethod

이 레벨에서 createTestMethodInstance 메서드는 출력 인수가 있는 유일한 플러그인 메서드입니다. 이 메서드는 각 Test 요소에 대해 생성된 TestCase 인스턴스를 반환합니다. 테스트 프레임워크는 이 인스턴스 각각을 해당 Test 메서드에 전달하고 TestMethodSetup 특성(Attribute)이나 TestMethodTeardown 특성이 있는 모든 메서드에 전달합니다.

테스트 프레임워크는 runTest 메서드 범위 내의 테스트 레벨에서 메서드를 실행합니다. 프레임워크가 모든 TestMethodSetup 작업을 완료하는 경우, 이 레벨의 플러그인 메서드를 Test 요소당 한 번씩 불러옵니다.

참고 항목

함수

클래스

관련 항목