Test fixtures код настройки и отключения, который настраивает предварительное состояние системы и возвращает его в исходное состояние после выполнения теста. Методы Setup и отключения заданы в TestCase
классифицировать по следующим атрибутам метода:
TestMethodSetup
и TestMethodTeardown
методы выполняются до и после каждого метода тестирования.
TestClassSetup
и TestClassTeardown
методы, запуск до и после всех методов тестирования в тест.
Среда тестирования гарантирует, что TestMethodSetup
и TestClassSetup
методы суперклассов выполняют перед таковыми в подклассах.
Авторам тестов рекомендуется выполнять все действия по отключению из TestMethodSetup
и TestClassSetup
блоки с использованием addTeardown
метод вместо реализации соответствующих методов отключения в TestMethodTeardown
и TestClassTeardown
блоки. Это гарантирует, что отключение выполняется в обратном порядке настройки, а также гарантирует, что содержание теста безопасно.
Следующий тест, FigurePropertiesTest
, содержит код настройки на уровне метода. The TestMethodSetup
метод создает рисунок перед запуском каждого теста и TestMethodTeardown
закрывает рисунок после. Как обсуждалось ранее, вы должны попытаться задать операции отключения с addTeardown
способ. Однако в иллюстративных целях этот пример показывает реализацию TestMethodTeardown
блок.
classdef FigurePropertiesTest < matlab.unittest.TestCase properties TestFigure end methods(TestMethodSetup) function createFigure(testCase) testCase.TestFigure = figure; end end methods(TestMethodTeardown) function closeFigure(testCase) close(testCase.TestFigure) end end methods(Test) function defaultCurrentPoint(testCase) cp = testCase.TestFigure.CurrentPoint; testCase.verifyEqual(cp,[0 0], ... 'Default current point is incorrect') end function defaultCurrentObject(testCase) import matlab.unittest.constraints.IsEmpty co = testCase.TestFigure.CurrentObject; testCase.verifyThat(co,IsEmpty, ... 'Default current object should be empty') end end end
Следующий тест, BankAccountTest
, содержит код настройки на уровне класса.
Чтобы настроить BankAccountTest
, который тестирует BankAccount
пример класса, описанный в Developing Classes - Typical Workflow, добавить TestClassSetup
метод, addBankAccountClassToPath
. Этот метод добавляет путь к BankAccount
файл примера. Как правило, путь настраивается с помощью PathFixture
. Этот пример выполняет операции настройки и отключения вручную в иллюстративных целях.
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
addTeardown
| matlab.unittest.TestCase