Main Content

addTeardown

Class: matlab.unittest.fixtures.Fixture
Namespace: matlab.unittest.fixtures

Dynamically add teardown code to fixture

Description

addTeardown(fixture,teardownFcn) registers the teardown code teardownFcn with the fixture. To dynamically run teardown code when the testing framework tears down the fixture, call addTeardown within the setup method of your Fixture subclass.

To restore the environment, the method enforces a last-in, first-out (LIFO) policy so that teardown actions are performed in the reverse order of their corresponding setup actions. Use addTeardown to achieve test content that is exception safe.

addTeardown(fixture,teardownFcn,input1,...,inputN) also specifies the input arguments with which teardownFcn is invoked for fixture teardown.

example

Input Arguments

expand all

Fixture, specified as a matlab.unittest.fixtures.Fixture object.

Teardown code, specified as a function handle.

Example: addTeardown(fixture,@() format(originalFormat))

Input arguments with which the function handle teardownFcn is invoked for fixture teardown, specified as a comma-separated list of values.

Example: addTeardown(fixture,@close,fig)

Example: addTeardown(fixture,@setenv,"UserName",originalUserName)

Attributes

Sealedtrue

To learn about attributes of methods, see Method Attributes.

Examples

expand all

Create and use a custom fixture that changes the output display format for numeric values to the currency format with two digits after the decimal point.

In a file named CurrencyFormatFixture.m in your current folder, create the CurrencyFormatFixture class by subclassing the matlab.unittest.fixtures.Fixture interface. Implement the setup method in the class so that the fixture changes the display format for numeric values to the currency format. To restore the display format to its original state after testing, call the addTeardown method within the setup method.

classdef CurrencyFormatFixture < matlab.unittest.fixtures.Fixture
    methods
        function setup(fixture)
            originalFormat = format;
            fixture.addTeardown(@format,originalFormat)
            format bank
        end
    end
end

In a file named ExampleTest.m in your current folder, create the ExampleTest class that applies the custom fixture and verifies that a numeric value is displayed in the expected format. To simplify this example, the actual value is produced by a call to the formattedDisplayText function. In practice, you test user-defined code.

classdef ExampleTest < matlab.unittest.TestCase
    methods (Test)
        function formatTest(testCase)
            testCase.applyFixture(CurrencyFormatFixture)
            actual = strtrim(formattedDisplayText(pi));
            expected = "3.14";
            testCase.verifyEqual(actual,expected)
        end
    end
end

Run the ExampleTest class. The testing framework sets up the fixture, which changes the display format to the currency format. Once the test run is complete, the framework tears down the fixture, which restores the original display format. In this example, the test passes.

runtests("ExampleTest");
Running ExampleTest
.
Done ExampleTest
__________

Alternatives

Instead of specifying teardown code by calling the addTeardown method within the setup method, you can implement the teardown method.

Version History

Introduced in R2014a