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

向测试运行程序添加插件

此示例演示如何向测试运行程序添加插件。matlab.unittest.plugins.TestRunProgressPlugin 显示有关测试用例的进度消息。此插件是 matlab.unittest 包的一部分。MATLAB® 将其用于默认测试运行程序。

为 BankAccount 类创建测试

在您的工作文件夹下的文件中,为 BankAccount 类创建一个测试文件。

type BankAccountTest.m
classdef BankAccountTest < matlab.unittest.TestCase
    % Tests the BankAccount class.
    
    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 测试用例创建一个测试套件 ts

ts = matlab.unittest.TestSuite.fromClass(?BankAccountTest);

显示不含任何插件的结果

创建一个不含任何插件的测试运行程序。

runner = matlab.unittest.TestRunner.withNoPlugins;
res = runner.run(ts);

不显示任何输出。

自定义测试运行程序

添加自定义插件 TestRunProgressPlugin

import matlab.unittest.plugins.TestRunProgressPlugin
runner.addPlugin(TestRunProgressPlugin.withVerbosity(2))
res = runner.run(ts);
Running BankAccountTest
.....
Done BankAccountTest
__________

MATLAB 显示有关 BankAccountTest 的进度消息。

另请参阅