Main Content

matlab.unittest.fixtures.TemporaryFolderFixture 클래스

네임스페이스: matlab.unittest.fixtures
슈퍼클래스: matlab.unittest.fixtures.Fixture

임시 폴더를 만드는 픽스처

설명

matlab.unittest.fixtures.TemporaryFolderFixture 클래스는 임시 폴더를 만드는 픽스처를 제공합니다. 테스트 프레임워크가 픽스처를 설정하면 픽스처는 임시 폴더를 만듭니다. 프레임워크가 픽스처를 해제하면 픽스처가 폴더와 그 내용을 삭제합니다. 픽스처는 폴더를 삭제하기 전에 먼저 임시 폴더에 정의된 모든 함수, MEX 파일, 클래스를 메모리에서 지웁니다.

matlab.unittest.fixtures.TemporaryFolderFixture 클래스는 handle 클래스입니다.

생성

설명

예제

fixture = matlab.unittest.fixtures.TemporaryFolderFixture는 임시 폴더를 만드는 픽스처를 구성합니다.

예제

fixture = matlab.unittest.fixtures.TemporaryFolderFixture(Name,Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 추가로 설정합니다. 예를 들어, fixture = matlab.unittest.fixtures.TemporaryFolderFixture("WithSuffix","_FeatureA")는 폴더 이름에 지정된 접미사가 사용된 임시 폴더를 만드는 픽스처를 구성합니다.

입력 인수

모두 확장

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: fixture = matlab.unittest.fixtures.TemporaryFolderFixture(WithSuffix="_FeatureA")

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: fixture = matlab.unittest.fixtures.TemporaryFolderFixture("WithSuffix","_FeatureA")

테스트 실패 후 임시 폴더와 그 내용을 보존할지 여부로, 숫자형 또는 논리값 0(false) 또는 1(true)로 지정됩니다. 실패에는 검증(Verification), 어설션(Assertion), 치명적 어설션(Fatal Assertion) 실패와 픽스처를 사용하는 테스트 내 uncaught error가 포함됩니다.

기본적으로 프레임워크는 테스트 실패를 확인하면 픽스처를 해제하고 픽스처는 임시 폴더와 그 내용을 삭제합니다. 값을 true로 지정하면 픽스처는 실패 후 임시 폴더와 그 내용을 삭제하지 않습니다. 임시 폴더와 그 내용을 보존하면 실패 원인을 디버그하는 데 도움이 될 수 있습니다.

이 인수는 PreserveOnFailure 속성을 설정합니다.

임시 폴더 이름의 접미사로, string형 스칼라 또는 문자형 벡터로 지정됩니다.

이 인수는 Suffix 속성을 설정합니다.

속성

모두 확장

픽스처가 설정 중에 만든 임시 폴더의 전체 경로로, 문자형 벡터로 반환됩니다. 프레임워크가 픽스처를 설정하면 픽스처는 이 속성을 설정합니다.

특성:

GetAccess
public
SetAccess
private

테스트 실패 후 임시 폴더와 그 내용을 보존할지 여부로, 논리값 0(false) 또는 1(true)로 반환됩니다. 실패에는 검증(Verification), 어설션(Assertion), 치명적 어설션(Fatal Assertion) 실패와 픽스처를 사용하는 테스트 내 uncaught error가 포함됩니다. 기본적으로 프레임워크는 실패를 확인하면 픽스처를 해제하고 픽스처는 임시 폴더와 그 내용을 삭제합니다.

이 속성은 PreservingOnFailure 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

임시 폴더 이름의 접미사로, 문자형 벡터로 반환됩니다.

이 속성은 WithSuffix 이름-값 인수에 의해 설정됩니다.

특성:

GetAccess
public
SetAccess
private

예제

모두 축소

TemporaryFolderFixture 인스턴스를 사용하여 테스트용 임시 폴더를 만듭니다.

현재 폴더에 있는 WritingToFileTest.m이라는 파일에서 WritingToFileTest 클래스를 만듭니다. 임시 폴더의 파일에 쓴 다음 파일 내용을 확인하는 Test 메서드를 클래스에 정의합니다. TemporaryFolderFixture 인스턴스를 사용하여 테스트용 임시 폴더를 만듭니다.

classdef WritingToFileTest < matlab.unittest.TestCase
    methods (Test)
        function testWithTemporaryFolder(testCase)
            import matlab.unittest.fixtures.TemporaryFolderFixture
            fixture = testCase.applyFixture(TemporaryFolderFixture);
            
            file = fullfile(fixture.Folder,"myFile.txt");
            fid = fopen(file,"w");
            testCase.addTeardown(@fclose,fid)
            testCase.assertNotEqual(fid,-1,"IO Problem")
            txt = repmat("ab",1,1000);
            dataToWrite = join(txt);
            fprintf(fid,"%s",dataToWrite);
            testCase.verifyEqual(string(fileread(file)),dataToWrite)
        end
    end
end

테스트를 실행합니다. 테스트 프레임워크가 임시 폴더를 만드는 픽스처를 설정합니다. 테스트 후 프레임워크가 픽스처를 해제하고 임시 폴더와 그 내용이 제거됩니다. 이 예제에서 테스트가 통과합니다.

runtests("WritingToFileTest");
Running WritingToFileTest
.
Done WritingToFileTest
__________

테스트 실패 후에도 유지되는 테스트용 임시 폴더를 만듭니다.

현재 폴더에 있는 PersistentFolderTest.m이라는 파일에서 PersistentFolderTest 클래스를 만듭니다. 테스트 클래스에서 TemporaryFolderFixture 인스턴스를 사용하여 테스트 실패 후에도 유지되는 임시 폴더를 만듭니다. 설명을 위해 이 예제의 테스트는 의도적으로 실패합니다.

classdef PersistentFolderTest < matlab.unittest.TestCase
    methods (Test)
        function testWithTemporaryFolder(testCase)
            import matlab.unittest.fixtures.TemporaryFolderFixture
            testCase.applyFixture(TemporaryFolderFixture ...
                ("PreservingOnFailure",true,"WithSuffix","_TestData"));

            % Failing test
            act = 3.1416;
            exp = pi;
            testCase.verifyEqual(act,exp)
        end
    end
end

테스트를 실행합니다. 테스트에 실패하지만 임시 폴더는 유지됩니다. 테스트 진단에 임시 폴더의 전체 경로가 들어 있습니다.

runtests("PersistentFolderTest");
Running PersistentFolderTest

================================================================================
Verification failed in PersistentFolderTest/testWithTemporaryFolder.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyEqual failed.
    --> The numeric values are not equal using "isequaln".
    --> Failure table:
            Actual        Expected               Error               RelativeError    
            ______    ________________    ____________________    ____________________
                                                                                      
            3.1416    3.14159265358979    7.34641020683213e-06    2.33843499679617e-06
    
    Actual Value:
       3.141600000000000
    Expected Value:
       3.141592653589793
    ----------------------
    Additional Diagnostic:
    ----------------------
    Temporary folder preserved on failure: C:\Temp\tpa00d0db0_45f0_4b3f_9ce9_3323db8df9de_TestData
    ------------------
    Stack Information:
    ------------------
    In C:\work\PersistentFolderTest.m (PersistentFolderTest.testWithTemporaryFolder) at 11
================================================================================

[Terse] Diagnostic logged (2022-10-04 09:23:49):
Because of a failure in the test using the TemporaryFolderFixture, the following folder will not be deleted:
C:\Temp\tpa00d0db0_45f0_4b3f_9ce9_3323db8df9de_TestData
.
Done PersistentFolderTest
__________

Failure Summary:

     Name                                          Failed  Incomplete  Reason(s)
    ===========================================================================================
     PersistentFolderTest/testWithTemporaryFolder    X                 Failed by verification.

  • TemporaryFolderFixture 클래스를 사용하는 대신 createTemporaryFolder 메서드를 사용하여 테스트용 임시 폴더를 만들 수 있습니다. 그러나 TemporaryFolderFixture 클래스를 사용하여 임시 폴더를 만들면 더 많은 기능을 사용할 수 있습니다.

  • TemporaryFolderFixture 클래스와 WorkingFolderFixture 클래스는 모두 임시 폴더를 생성하는 픽스처를 만듭니다. 그러나 WorkingFolderFixture로 생성된 픽스처는 임시 폴더를 현재 폴더로 설정하는 작업까지 수행합니다.

버전 내역

R2013b에 개발됨