Main Content

클래스를 사용하여 설정(Setup) 코드와 해제(Teardown) 코드 작성하기

이 예제에서는 클래스 기반 테스트를 위해 메서드 레벨과 클래스 레벨의 설정 코드와 해제 코드를 구현하는 방법을 다룹니다.

테스트 픽스처(Fixture)

테스트 픽스처는 시스템의 테스트 이전 상태를 설정하고 테스트 실행 후 상태를 원래 상태로 되돌리는 설정 코드와 해제 코드입니다. 설정 메서드와 해제 메서드는 TestCase 클래스에서 다음과 같은 메서드 특성으로 정의됩니다.

  • TestMethodSetup 메서드와 TestMethodTeardown 메서드는 각각의 Test 메서드 이전과 이후에 실행됩니다.

  • TestClassSetup 메서드와 TestClassTeardown 메서드는 테스트 클래스의 모든 Test 메서드 이전과 이후에 실행됩니다.

테스트 프레임워크는 슈퍼클래스의 TestMethodSetup 메서드와 TestClassSetup 메서드를 동일한 서브클래스의 메서드 이전에 실행합니다.

TestMethodTeardown 블록과 TestClassTeardown methods 블록에서 해제 메서드를 구현하는 대신, TestMethodSetup 블록과 TestClassSetup methods 블록 내에서 addTeardown 메서드를 사용하여 모든 해제 동작을 수행하는 것이 좋습니다. 중간에 예외를 발생시킬 수 있는 다른 코드 없이 원래 상태 변경 직전이나 직후에 addTeardown을 호출하십시오. addTeardown을 사용하면 테스트 프레임워크가 설정 코드의 역순으로 해제 코드를 실행할 수 있고, 예외가 발생하지 않는 테스트 콘텐츠를 생성합니다.

메서드 레벨 설정 코드를 사용한 테스트 케이스

FigurePropertiesTest 클래스는 Figure의 속성을 테스트합니다. 이 클래스에는 메서드 레벨의 설정 코드와 해제 코드가 있습니다. TestMethodSetup 메서드는 각각의 테스트 실행 이전에 Figure를 만들며, TestMethodTeardown 메서드는 이후에 이 Figure를 닫습니다. 앞에서 설명했던 것처럼, addTeardown 메서드를 사용하여 해제 동작을 정의해야 합니다. 그러나 이 예제에서는 설명을 돕기 위해 TestMethodTeardown methods 블록의 구현법을 보여줍니다.

classdef FigurePropertiesTest < matlab.unittest.TestCase
    properties
        TestFigure
    end

    methods (TestMethodSetup)
        function createFigure(testCase)
            testCase.TestFigure = figure;
        end
    end

    methods (TestMethodTeardown)
        function closeFigure(testCase)
            close(testCase.TestFigure)
        end
    end

    methods (Test)
        function defaultCurrentPoint(testCase)
            cp = testCase.TestFigure.CurrentPoint;
            testCase.verifyEqual(cp,[0 0], ...
                "Default current point must be [0 0].")
        end

        function defaultCurrentObject(testCase)
            import matlab.unittest.constraints.IsEmpty
            co = testCase.TestFigure.CurrentObject;
            testCase.verifyThat(co,IsEmpty, ...
                "Default current object must be empty.")
        end
    end
end

클래스 레벨 설정 코드를 사용한 테스트 케이스

CurrencyFormatTest 클래스는 숫자형 값에 대한 통화 표시 형식을 테스트합니다. 이 클래스에는 클래스 레벨의 설정 코드와 해제 코드가 있습니다. 테스트를 실행하기 전에 TestClassSetup 메서드는 숫자형 값의 출력 표시 형식을 소수점 이하 2자릿수의 통화 형식으로 변경합니다. 클래스의 모든 테스트가 실행된 후 addTeardown 메서드를 호출하면 표시 형식이 원래 상태로 복원됩니다. 이 예제에서는 설명을 돕기 위해 TestClassSetupmethods 블록의 구현법을 보여줍니다. 실제로, 클래스 레벨의 설정 동작 및 해제 동작을 수행하는 것은 각각의 테스트에 대해 이러한 동작을 반복하는 것이 시간이 많이 소요되고 비효율적인 경우 유용합니다.

classdef CurrencyFormatTest < matlab.unittest.TestCase
    methods (TestClassSetup)
        function setFormat(testCase)
            originalFormat = format;
            testCase.addTeardown(@format,originalFormat)
            format Bank
        end
    end

    methods (Test)
        function truncationTest(testCase)
            actual = strtrim(formattedDisplayText(pi));
            expected = "3.14";
            testCase.verifyEqual(actual,expected)
        end

        function divisionTest(testCase)
            actual = strtrim(formattedDisplayText(100/3));
            expected = "33.33";
            testCase.verifyEqual(actual,expected)
        end

        function negativeValueTest(testCase)
            actual = strtrim(formattedDisplayText(-1));
            expected = "-1.00";
            testCase.verifyEqual(actual,expected)
        end
    end

end

참고 항목

|

관련 항목