本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

matlab.unittest.Test 类

包: matlab.unittest
超类: matlab.unittest.TestSuite

单个测试方法的设定

说明

matlab.unittest.Test 类保留 TestRunner 对象运行 TestCase 类的单个 Test 方法所需的信息。标量 Test 实例为 TestSuite 数组中包含的基本元素。简单的 Test 实例数组是常用形式的 TestSuite 数组。

属性

Name

Test 元素的名称。

ProcedureName

Test 元素运行的测试过程的名称。在基于类的测试中,ProcedureName 是测试方法的名称。在基于函数的测试中,它是包含测试的局部函数的名称。在基于脚本的测试中,它是从测试部分标题生成的名称。与 Name 属性不同,ProcedureName 不包括任何类或包名称或有关参数化的信息。

TestClass

TestCase 的测试类的名称。如果 Test 元素不是基于类的测试,则 TestClass 是空字符串。

BaseFolder

包含用于定义测试内容的文件的文件夹名称。对于包中定义的测试,基本文件夹是顶级包文件夹的父级。

Parameterization

测试所需的参数的行向量。Parameterization 属性包含 TestRunner 要求的所有参数化数据。

SharedTestFixtures

测试所需的脚手架的行向量。SharedTestFixtures 属性包含 TestCase 类的 SharedTestFixtures 类级别属性指定的所有脚手架。

Tags

应用于 Test 元素的标记的元胞数组。

示例

全部折叠

在当前文件夹中,创建一个名为 BankAccountTest.m 的文件,其中包含以下测试类。

classdef BankAccountTest < matlab.unittest.TestCase
    
    methods (TestClassSetup)
        function addBankAccountClassToPath(testCase)
            p = path;
            testCase.addTeardown(@path,p);
            addpath(fullfile(matlabroot,'help','techdoc','matlab_oop',...
                'examples'));
        end
    end
    
    methods (Test)
        function testConstructor(testCase)
            b = BankAccount(1234, 100);
            testCase.verifyEqual(b.AccountNumber, 1234, ...
                'Constructor failed to correctly set account number');
            testCase.verifyEqual(b.AccountBalance, 100, ...
                'Constructor failed to correctly set account balance');
        end
        
        function testConstructorNotEnoughInputs(testCase)
            import matlab.unittest.constraints.Throws;
            testCase.verifyThat(@()BankAccount, ...
                Throws('MATLAB:minrhs'));
        end
        
        function testDesposit(testCase)
            b = BankAccount(1234, 100);
            b.deposit(25);
            testCase.verifyEqual(b.AccountBalance, 125);
        end
        
        function testWithdraw(testCase)
            b = BankAccount(1234, 100);
            b.withdraw(25);
            testCase.verifyEqual(b.AccountBalance, 75);
        end
        
        function testNotifyInsufficientFunds(testCase)
            callbackExecuted = false;
            function testCallback(~,~)
                callbackExecuted = true;
            end
            
            b = BankAccount(1234, 100);
            b.addlistener('InsufficientFunds', @testCallback);
            
            b.withdraw(50);
            testCase.assertFalse(callbackExecuted, ...
                'The callback should not have executed yet');
            b.withdraw(60);
            testCase.verifyTrue(callbackExecuted, ...
                'The listener callback should have fired');
        end
    end
end

基于 BankAccountTest 类中的所有 Test 方法创建一系列 Test 对象。

import matlab.unittest.TestSuite 
suite = TestSuite.fromClass(?BankAccountTest); 
whos suite
  Name       Size            Bytes  Class                   Attributes

  suite      1x5             10502  matlab.unittest.Test   

每个测试都是一个 matlab.unittest.Test 对象。

显示 Test 元素名称。

{suite.Name}'
ans =

  5×1 cell array

    {'BankAccountTest/testConstructor'               }
    {'BankAccountTest/testConstructorNotEnoughInputs'}
    {'BankAccountTest/testDesposit'                  }
    {'BankAccountTest/testWithdraw'                  }
    {'BankAccountTest/testNotifyInsufficientFunds'   }