클래스를 사용하여 설정(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
메서드를 호출하면 표시 형식이 원래 상태로 복원됩니다. 이 예제에서는 설명을 돕기 위해 TestClassSetup
methods
블록의 구현법을 보여줍니다. 실제로, 클래스 레벨의 설정 동작 및 해제 동작을 수행하는 것은 각각의 테스트에 대해 이러한 동작을 반복하는 것이 시간이 많이 소요되고 비효율적인 경우 유용합니다.
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
참고 항목
matlab.unittest.TestCase
| addTeardown