Main Content

matlab.unittest.diagnostics.ScreenshotDiagnostic 클래스

네임스페이스: matlab.unittest.diagnostics

화면을 이미지 파일로 캡처하는 진단

설명

ScreenshotDiagnostic 클래스를 사용하여, 제공되는 화면을 이미지 파일로 캡처하는 진단을 만듭니다. 이 파일은 MATLAB®이 테스트 실행을 완료한 후에도 유지되므로 테스트 후 검사에 사용할 수 있습니다.

생성

ScreenshotDiagnostic()은 제공되는 화면을 이미지 파일로 캡처하는 진단을 만듭니다. ScreenshotDiagnostic 인스턴스를 진단할 때 테스트 프레임워크는 스크린샷을 PNG 파일로 저장합니다. 각 파일은 접두사(기본적으로 Screenshot_'), 자동으로 생성된 식별자, 파일 확장자로 이루어진 고유한 이름을 갖습니다. 예제 파일 이름은 Screenshot_cf95fe7f-5a7c-4310-9c49-16c0c18a969f.png입니다. 파일의 위치를 보려면 FileArtifact 인스턴스를 통해 TestResult 객체에 액세스하십시오.

ScreenshotDiagnostic('Prefix',prefix)는 지정된 접두사로 이름이 시작하는 파일에 스크린샷을 저장하는 진단을 만듭니다.

입력 인수

모두 확장

파일 이름 접두사로, 텍스트로 지정됩니다. 접두사를 지정하지 않을 경우 디폴트 접두사는 'Screenshot_'입니다. 문자형 벡터나 string형 스칼라로 값을 지정합니다. MATLAB은 이 값을 객체 내에 문자형 벡터로 저장합니다.

예: 'LoggedScreenshot_'

예: "TestScreenshot-"

속성

모두 확장

파일 이름 접두사로, 문자형 벡터로 반환됩니다. 디폴트 접두사는 'Screenshot_'입니다. Prefix 속성은 읽기 전용이며, 생성 중에 값이 설정됩니다.

복사 의미 체계

핸들. 핸들 클래스가 복사 작업에 미치는 영향에 대한 내용은 객체 복사 항목을 참조하십시오.

예제

모두 축소

대화형 방식 사용을 위한 TestCase를 생성합니다.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

ScreenshotDiagnostic을 사용하여 바탕 화면의 이미지를 테스트 진단으로 저장합니다.

import matlab.unittest.diagnostics.ScreenshotDiagnostic
testCase.verifyTrue(false,ScreenshotDiagnostic)
Interactive verification failed.

----------------
Test Diagnostic:
----------------
Screenshot captured to:
--> C:\work\Temp\Screenshot_e99834ed-75e9-4ee1-9596-2f95e64b0ff1.png

---------------------
Framework Diagnostic:
---------------------
verifyTrue failed.
--> The value must evaluate to "true".

Actual logical:
       0

대화형 방식 사용을 위한 TestCase를 생성합니다.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

ScreenshotDiagnostic을 사용하여 바탕 화면의 이미지를 사용자 지정 접두사를 사용한 테스트 진단으로 기록합니다.

import matlab.unittest.diagnostics.ScreenshotDiagnostic
testCase.log(ScreenshotDiagnostic('Prefix','LoggedScreenshot_'))
Interactive diagnostic logged.
Screenshot captured to:
--> C:\work\Temp\LoggedScreenshot_35bb1ecb-441a-4f79-9f59-8b18ac3f9d12.png

현재 작업 폴더의 파일에서 ScreenShotExampleTest 테스트 클래스를 생성합니다. failingTest 테스트 메서드가 실패할 경우(이 예제에서는 항상 실패함) 나중에 검토할 수 있도록 ScreenshotDiagnostic을 사용하여 화면의 이미지를 캡처합니다. logScreenshotTest 테스트는 항상 화면의 이미지를 캡처하여 접두사 LoggedScreenshot_이 붙은 파일에 저장합니다.

classdef ScreenShotExampleTest < matlab.unittest.TestCase
    methods (Test)
        function passingTest(testCase)
            testCase.verifyEqual(7,4+3);
        end
        function failingTest(testCase)
            import matlab.unittest.diagnostics.ScreenshotDiagnostic
            testCase.verifyFalse(true,ScreenshotDiagnostic);
        end
        function logScreenshotTest(testCase)
            import matlab.unittest.diagnostics.ScreenshotDiagnostic
            testCase.verifySubstring("Some Long Message","sage");
            testCase.log(1,ScreenshotDiagnostic('Prefix','LoggedScreenshot_'));
        end
    end
end

테스트를 실행하십시오.

res = runtests('ScreenShotExampleTest');
Running ScreenShotExampleTest
.
================================================================================
Verification failed in ScreenShotExampleTest/failingTest.

    ----------------
    Test Diagnostic:
    ----------------
    Screenshot captured to:
    --> C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\Screenshot_b24f2219-61a4-4cf8-b4da-fe7e10da92bd.png

    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyFalse failed.
    --> The value must evaluate to "false".
    
    Actual logical:
           1

    ------------------
    Stack Information:
    ------------------
    In C:\work\ScreenShotExampleTest.m (ScreenShotExampleTest.failingTest) at 8
================================================================================
.   [Terse] Diagnostic logged (2016-12-22T11:21:54): 
Screenshot captured to:
--> C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\LoggedScreenshot_26def240-9a9d-4147-9d3e-c399ae157c0f.png

.
Done ScreenShotExampleTest
__________

Failure Summary:

     Name                               Failed  Incomplete  Reason(s)
    ================================================================================
     ScreenShotExampleTest/failingTest    X                 Failed by verification.

명령 창의 프레임워크 진단은 캡처된 스크린샷을 나타냅니다. 테스트 결과의 진단 레코드를 통해 프로그래밍 방식으로 이 위치에 액세스할 수도 있습니다.

두 번째 테스트는 실패하므로 스크린샷은 테스트 진단의 일부로서 저장됩니다. TestDiagnosticResultsArtifacts 객체를 통해 스크린샷의 경로에 액세스합니다.

res(2).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts.FullPath
ans = 

    "C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\Screenshot_b24f2219-61a4-4cf8-b4da-fe7e10da92bd.png"

세 번째 테스트는 통과하며, 스크린샷은 TestCaselog 메서드를 통해, 기록된 진단의 일부로 저장됩니다. LoggedDiagnosticResultsArtifacts 객체를 통해 스크린샷의 경로에 액세스합니다.

res(3).Details.DiagnosticRecord.LoggedDiagnosticResults.Artifacts.FullPath
ans = 

    "C:\Temp\bf0e26d1-8d47-4462-b1f2-673c7d35c236\LoggedScreenshot_26def240-9a9d-4147-9d3e-c399ae157c0f.png"

  • 저장된 스크린샷의 위치는 ArtifactsRootFolder에 들어 있는 폴더 내에서 테스트 실행에 대해 고유한 이름을 갖는 폴더입니다. 대화형 방식으로 테스트를 실행하는 경우 루트 폴더의 위치는 tempdir()로 반환되는 값입니다.

  • 저장된 스크린샷의 경로를 확인하려면 특정 테스트 결과의 FileArtifact 객체에 액세스하십시오. 예를 들어, TestResult 배열인 res가 있다고 가정합니다. 다음과 같이 이 배열의 첫 번째 요소에 대해 저장된 Figure의 위치를 확인합니다.

    res(1).Details.DiagnosticRecord.TestDiagnosticResults.Artifacts
    ans = 
    
      FileArtifact with properties:
    
            Name: "Screenshot_f51601ef-86bc-499c-bcec-203969f72a85.png"
        Location: "C:\work\Temp\1f4d3b64-3201-4bde-92ed-ad6859e97051"
        FullPath: "C:\work\Temp\1f4d3b64-3201-4bde-92ed-ad6859e97051\Screenshot_f51601ef-86bc-499c-bcec-203969f72a85.png"
    
  • macOS 시스템을 사용하는 경우 시스템 환경설정에서 터미널 앱이 화면의 내용을 기록하도록 허용합니다. 이 권한은 ScreenshotDiagnostic이 화면을 이미지 파일로 캡처할 때 MATLAB 데스크탑과 같은 열린 창을 포함할 수 있도록 합니다.

버전 내역

R2017a에 개발됨