Main Content

assumeAccessed

클래스: matlab.mock.TestCase
네임스페이스: matlab.mock

속성이 액세스되었음을 가정(Assumption)

설명

예제

assumeAccessed(testcase,behavior)는 속성이 액세스되었음을 가정합니다.

예제

assumeAccessed(testcase,behavior,diagnostic)은 또한 diagnostic의 진단 정보를 가설 검정에 연결합니다. 테스트 실행기 구성에 따라 테스트 프레임워크는 가설 검정이 통과 또는 실패일 때 진단을 표시할 수 있습니다. 기본적으로 프레임워크는 가설 검정이 실패일 때만 진단을 표시합니다. 테스트 실행기를 사용자 지정하여 디폴트 동작을 재정의할 수 있습니다. 예를 들어, DiagnosticsOutputPlugin 인스턴스를 사용하여 실패 및 통과 이벤트 진단을 모두 표시합니다.

입력 인수

모두 확장

테스트 케이스의 인스턴스로, matlab.mock.TestCase 객체로 지정됩니다.

모의 객체의 동작으로, matlab.mock.PropertyBehavior 인스턴스로 지정됩니다. matlab.mock.PropertyBehavior의 인스턴스를 만들려면 동작 객체의 속성에 액세스하십시오.

예: behavior.PropertyFoo

표시할 진단 정보로, string형 배열, 문자형 배열, 함수 핸들 또는 matlab.automation.diagnostics.Diagnostic 객체로 지정됩니다. 진단 값은 비 스칼라일 수 있습니다. 자세한 내용은 matlab.automation.diagnostics.Diagnostic 항목을 참조하십시오.

예: "My diagnostic message."

예: @() datetime('now')

예제

모두 확장

대화형 방식으로 사용하기 위한 묵시적 인터페이스가 있는 모의 객체를 생성합니다. 이 인터페이스는 PropertyFoo 속성과 PropertyBar 속성을 포함합니다. PropertyFoo의 값을 저장하여 이 속성에 액세스합니다.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
value = mock.PropertyFoo;

PropertyFoo가 액세스되었음을 가정합니다.

testCase.assumeAccessed(behavior.PropertyFoo);
An assumption was met.

대화형 방식으로 사용하기 위한 묵시적 인터페이스가 있는 모의 객체를 생성합니다. 이 인터페이스는 PropertyFoo 속성과 PropertyBar 속성을 포함합니다. PropertyFoo의 값을 저장하여 이 속성에 액세스합니다.

testCase = matlab.mock.TestCase.forInteractiveUse;
[mock,behavior] = testCase.createMock('AddedProperties', ...
    ["PropertyFoo","PropertyBar"]);
value = mock.PropertyFoo;

PropertyBar가 액세스되었음을 가정합니다. 실패 시 진단 정보를 표시합니다.

testCase.assumeAccessed(behavior.PropertyBar, ...
    'PropertyBar should have been accessed.');
An assumption was not met.
    ----------------
    Test Diagnostic:
    ----------------
    PropertyBar should have been accessed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    assumeAccessed failed.
    --> Property 'PropertyBar' was never accessed.
    
    Specified property access operation:
    PropertyGetBehavior
        <Mock>.PropertyBar
Assumption failed.

테스트 환경이 다른 방식으로는 테스트 실패로 이어지지 않는 사전 조건을 충족시키도록 하려면 가정(Assumption) 가설 검정을 사용하십시오. 가정에 실패한 테스트가 따로 걸러지고, 테스트 프레임워크는 이런 테스트를 Incomplete로 표시합니다.

  • 예외를 발생시키지 않으면서 실패를 생성하고 기록하려면 확인 가설 검정을 사용하십시오. 검증은 예외를 발생시키지 않으므로, 검증 실패가 발생하는 경우에도 모든 테스트 콘텐츠가 완료될 때까지 실행됩니다. 일반적으로 테스트를 조기에 종료할 필요가 없기 때문에 검증(Verification)은 단위 테스트에서 우선적으로 사용되는 가설 검정 유형입니다. 사전 조건 위반 또는 잘못된 테스트 설정을 테스트하려면 다른 가설 검정 유형을 사용하십시오.

  • 실패 조건이 현재 남은 테스트 콘텐츠를 무효화하지만, 후속 테스트 메서드의 정상적인 실행을 방해하지 않는 경우 어설션 가설 검정(Assertion Qualification)을 사용하십시오. 어설션 지점에서 실패할 경우 현재 테스트 메서드가 실패, 미완료 상태로 표시됩니다.

  • 실패 시 테스트 세션을 중단하려면 치명적 어설션(Fatal Assertion) 가설 검정을 사용하십시오. 이러한 가설 검정은 실패 모드가 매우 주요한 사안이라 테스트를 계속할 이유가 없는 경우에 유용합니다. 또한, 픽스처(Fixture) 해제를 수행해도 MATLAB® 상태가 올바르게 복원되지 않으며 테스트를 중단하고 새 세션을 시작하는 것이 더 나은 경우에도 유용합니다.

대안

assumeAccessed 메서드를 사용하는 것은 Assumable 클래스의 assumeThat 메서드와 함께 matlab.mock.constraints.WasAccessed 제약 조건을 사용하는 것과 기능적으로 동일합니다. 예를 들어, 다음 코드 블록들은 기능적으로 동일합니다.

% Using the assumeAccessed method
testCase.assumeAccessed(behavior.PropertyFoo);

% Using the WasAccessed constraint with assumeThat method
import matlab.mock.constraints.WasAccessed;
testCase.assumeThat(behavior.PropertyFoo,WasAccessed);
그러나 WasAccessed 제약 조건을 사용하면 추가적인 기능을 사용할 수 있습니다. 예를 들어, 속성이 특정 횟수로 액세스되었음을 지정할 수 있습니다.

버전 내역

R2017a에 개발됨