이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

matlab.unittest.constraints.IssuesWarnings 클래스

패키지: matlab.unittest.constraints
슈퍼클래스: matlab.unittest.constraints.Constraint

예상 경고 프로파일을 발생시키는 함수를 규정하는 제약 조건

설명

IssuesWarnings 클래스는 예상 경고 프로파일을 발생시키는 제약 조건을 생성합니다. 이 제약 조건은 실제 값이 특정 경고 세트를 발생시키는 함수 핸들인 경우에만 충족됩니다. 경고 ID를 사용하여 경고를 지정합니다.

기본적으로 제약 조건은 테스트 프레임워크가 함수 핸들을 불러오는 경우 MATLAB®이 지정된 경고 세트를 발생시키는 것만 확인합니다. 제약 조건은 경고 발생 횟수, 경고 발생 순서 및 지정되지 않은 경고의 발생 여부를 무시합니다. 그러나 순서, 개수, 경고 세트를 구분하는 파라미터를 설정할 수 있습니다. 또는 비교를 위한 정확한 경고 프로파일을 지정할 수 있습니다.

생성

outConstObj = IssuesWarnings(warnArr)은 예상 경고 warnArr을 발생시키는 함수를 규정하는 제약 조건 outConstObj를 생성합니다.

outConstObj = IssuesWarnings(expVal,Name,Value)는 하나 이상의 Name,Value 쌍 인수가 추가 옵션으로 지정된 제약 조건을 생성합니다.Name은 작은따옴표('') 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

입력 인수

warnArr

테스트 프레임워크가 함수 핸들을 불러올 때 예상되는 경고 ID로, 경고 ID로 구성된 셀형 배열로 지정됩니다. warnArr이 비어 있으면 생성자가 MException을 발생시킵니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

'Exactly'

값이 정확하게 일치하는 경고 프로파일을 발생시켜야 하는 함수 핸들인지 여부를 나타내는 표시로, false 또는 true(logical 0 또는 1)로 지정됩니다. 이 값이 false인 경우 인스턴스가 다른 파라미터의 사양과 디폴트 인스턴스 동작에 의존하여 비교의 엄격성을 지정합니다. true로 설정한 경우, 인스턴스는 경고 프로파일이 지정된 경고 프로파일과 정확히 동일해야 함을 요구합니다.

디폴트 값: false

'RespectingCount'

요소 개수를 고려할지 여부를 나타내는 표시로, false 또는 true(logical 0 또는 1)로 지정됩니다. 이 값이 false인 경우, 인스턴스는 멤버의 발생 수와 빈도를 무시합니다. true로 설정된 경우 인스턴스는 세트 멤버의 총 개수를 무시하지 않습니다. 즉, 이 인스턴스는 지정된 모든 경고를 발생시키며, 특정 경고의 발생 횟수가 warnArr에 지정된 경고 횟수와 다른 경우 충족되지 않습니다.

디폴트 값: false

'RespectingOrder'

요소의 순서를 고려할지 여부를 나타내는 표시로, false 또는 true(logical 0 또는 1)로 지정됩니다. 이 값이 false인 경우, 인스턴스는 세트 멤버의 순서를 무시합니다. true로 설정된 경우 인스턴스는 세트 멤버의 순서를 무시하지 않습니다. 즉, 이 인스턴스는 경고 발생 순서가 warnArr에 지정된 경고 순서와 다른 경우 충족되지 않습니다.

지정된 경고 세트의 순서는 경고 프로파일을 반복된 인접 경고가 없는 프로파일로 잘라냄으로써 결정됩니다. 예를 들어, 경고 프로파일 {id:A, id:A, id:B, id:C, id:C, id:C, id:A, id:A, id:A} {id:A, id:B, id:C, id:A}로 잘립니다.

이 제약 조건이 순서를 고려하는 경우 경고의 발생 및 예상 순서는 예상 경고 프로파일의 순서와 일치해야 합니다. 발생된 경고 중에 warnArr에 없는 경고는 순서를 결정할 때 무시됩니다.

디폴트 값: false

'RespectingSet'

세트 요소를 고려할지 여부를 나타내는 표시로, false 또는 true(logical 0 또는 1)로 지정됩니다. 이 값이 false인 경우, 인스턴스는 추가 세트 멤버를 무시합니다. true로 설정된 경우 인스턴스는 추가 세트 멤버를 무시하지 않습니다. 즉, 이 인스턴스는 지정된 모든 경고를 발생시키며, 지정되지 않은 추가 경고를 발생시킨 경우 충족되지 않습니다.

디폴트 값: false

'WhenNargoutIs'

함수 핸들을 불러올 때 제약 조건이 요구하는 출력값의 개수로, 음이 아닌 실수형 정수 스칼라로 지정됩니다.

디폴트 값: 0

속성

Exact

제약 조건이 정확한 비교를 수행하는지 여부를 나타내는 표시입니다. 'Exactly' 인수를 통해 이름-값 쌍으로 생성자에 이 속성을 설정합니다.

ExpectedWarnings

예상 경고 ID입니다. warnArr 입력 인수를 통해 생성자에 이 읽기 전용 속성을 설정합니다.

FunctionOutputs

제공된 함수 핸들을 불러올 때 생성되는 출력 인수로, 셀형 배열로 지정됩니다. 이 속성은 출력 인수에 대한 액세스를 제공합니다. 이 속성은 읽기 전용이며, 함수 핸들을 불러올 때 테스트 프레임워크로 설정합니다. 출력값의 개수는 Nargout 속성으로 지정합니다.

Nargout

함수를 실행할 때 인스턴스가 사용하는 출력 인수의 개수입니다. 'WhenNargoutIs' 인수를 통해 이름-값 쌍으로 생성자에 이 속성을 설정합니다.

RespectCount

제약 조건이 요소 개수를 고려할지 여부를 나타내는 표시로, 'RespectingCount' 인수를 통해 이름-값 쌍으로 생성자에 지정됩니다.

RespectOrder

제약 조건이 요소 순서를 고려할지 여부를 나타내는 표시로, 'RespectingOrder' 인수를 통해 이름-값 쌍으로 생성자에 지정됩니다.

RespectSet

제약 조건이 세트 요소를 고려할지 여부를 나타내는 표시로, 'RespectingSet' 인수를 통해 이름-값 쌍으로 생성자에 지정됩니다.

복사 의미 체계

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

예제

모두 축소

대화형 방식 테스트를 위한 테스트 케이스를 생성합니다.

import matlab.unittest.TestCase
import matlab.unittest.constraints.IssuesWarnings

testCase = TestCase.forInteractiveUse;

이 예제에서 사용할 헬퍼 익명 함수를 만듭니다. 여러 개의 경고 ID를 만듭니다.

issueWarnings = @(idCell) cellfun(@(id) warning(id,'Message'), idCell);
firstID =   'first:id';
secondID =  'second:id';
thirdID =   'third:id';

헬퍼 함수가 특정 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID}),...
    IssuesWarnings({firstID}))
Interactive verification passed.

함수가 개수, 경고 세트 및 순서를 무시하고 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID, thirdID, secondID,...
    firstID}), IssuesWarnings({secondID, firstID}))
Interactive verification passed.

함수가 경고 세트를 고려하면서 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID, thirdID, secondID,...
    firstID}), IssuesWarnings({firstID, secondID, thirdID}, ...
    'RespectingSet', true))
Interactive verification passed.

함수가 경고 개수를 고려하면서 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({secondID, firstID, thirdID,...
    secondID}), IssuesWarnings({firstID, secondID, secondID}, ...
    'RespectingCount', true))
Interactive verification passed.

함수가 경고 순서를 고려하면서 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID, secondID, secondID,...
    thirdID}), IssuesWarnings({firstID, secondID}, 'RespectingOrder', true))
Interactive verification passed.

함수가 예상 경고 프로파일과 정확히 일치하는 경고를 발생시키는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID, secondID, secondID,...
    thirdID}), IssuesWarnings({firstID, secondID, secondID, thirdID}, ...
    'Exactly', true))
Interactive verification passed.

실제 값이 함수 핸들이 아닌 경우 제약 조건이 충족되지 않는지 확인합니다.

testCase.verifyThat(5, IssuesWarnings({firstID}))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The value must be an instance of the expected type.
    
    Actual Class:
        double
    Expected Type:
        function_handle

Actual Value:
         5

함수가 경고를 발생시키지 않을 경우 제약 조건이 충족되지 않는지 확인합니다.

testCase.verifyThat(@rand, IssuesWarnings({firstID}))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile ignores:
      Set
      Count
      Order
    --> The function handle did not issue any warnings.
    
    Expected Warning Profile:
        --> 'first:id'

Evaluated Function:
        @rand

함수가, 지정되지 않은 경고 ID를 발생시키는 경우 제약 조건이 충족되지 않는지 확인합니다.

testCase.verifyThat(@() issueWarnings({firstID}), IssuesWarnings({secondID}))
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile ignores:
      Set
      Count
      Order
    --> The function handle did not issue the correct warnings.
        
        Missing Warnings:
            --> 'second:id'
    
    Actual Warning Profile:
        --> 'first:id'
    Expected Warning Profile:
        --> 'second:id'

Evaluated Function:
        @()issueWarnings({firstID})

다음과 같은 실제 값과 경고 배열이 있다고 가정하겠습니다.

actVal = @() issueWarnings({firstID, firstID, secondID, firstID});
warnArr = {firstID, secondID, firstID, firstID};

경고 배열이 예상 배열과 정확히 동일한지 테스트합니다.

testCase.verifyThat(actVal, IssuesWarnings(warnArr, 'Exactly', true))
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Warning: Message 
> In @(id)warning(id,'Message')
  In @(idCell)cellfun(@(id)warning(id,'Message'),idCell)
  In @()issueWarnings({firstID,firstID,secondID,firstID})
  In matlab.unittest.internal.constraints.FunctionHandleConstraint/invoke (line 36)
  In matlab.unittest.internal.constraints.WarningQualificationConstraint/invoke (line 39)
  In matlab.unittest.constraints.IssuesWarnings/invoke (line 431)
  In matlab.unittest.constraints.IssuesWarnings/invokeCapturingOutput (line 510)
  In matlab.unittest.constraints.IssuesWarnings/issuesExpectedWarnings (line 519)
  In matlab.unittest.constraints.IssuesWarnings/satisfiedBy (line 239)
  In matlab.unittest.internal.qualifications.QualificationDelegate/qualifyThat (line 62)
  In matlab.unittest.qualifications.Verifiable/verifyThat (line 228) 
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
IssuesWarnings failed.
--> The function handle did not issue a correct warning profile.
    The expected warning profile must match exactly.
    --> The function handle did not issue the exact warning profile expected.
    
    Actual Warning Profile:
        --> 'first:id'
        --> 'first:id'
        --> 'second:id'
        --> 'first:id'
    Expected Warning Profile:
        --> 'first:id'
        --> 'second:id'
        --> 'first:id'
        --> 'first:id'

Evaluated Function:
        @()issueWarnings({firstID,firstID,secondID,firstID})

세트, 순서, 개수를 고려할 때 경고 배열이 예상 배열과 동일한지 테스트합니다.

testCase.verifyThat(actVal, IssuesWarnings(warnArr,...
    'RespectingSet',true,'RespectingOrder',true,'RespectingCount',true))
Interactive verification passed.

이 예에서 세트, 순서 및 개수를 고려하여 경고 프로파일을 규정하는 제약 조건은 정확한 경고 프로파일을 지정하는 제약 조건과 동일하지 않습니다.