编写Matlab约束单元测试

时间:2014-02-25 18:32:19

标签: matlab unit-testing

我正在尝试编写一个检查约束的单元测试。我只是想看看如何使用它:

classdef UnitTester < matlab.unittest.TestCase


    properties


    end

    methods (Test)

        function testCheckLessThan (testCase)
              testCase.verifyThat(2, IsLessThan(3));
        end

    end


end

当我使用run(UnitTester)运行它时会出现以下错误:

Uncaught error occurred in UnitTester/testCheckLessThan.

    --------------
    Error Details:
    --------------
    Undefined function 'IsLessThan' for input arguments of type 'double'.

1 个答案:

答案 0 :(得分:0)

您需要的是在使用它的函数中导入约束,如下所示:

classdef UnitTester < matlab.unittest.TestCase

    methods (Test)

        function testCheckLessThan (testCase)
              import matlab.unittest.constraints.IsLessThan;

              testCase.verifyThat(2, IsLessThan(3));
        end

    end   

end

希望有所帮助!

修改 如果您希望避免在文件中的每个方法或本地函数中导入IsLessThan约束,则可以通过利用本地函数可用作作用域机制的事实来有效地为IsLessThan定义命名空间。这看起来如下:

classdef UnitTester < matlab.unittest.TestCase

    methods (Test)

        function testCheckLessThan (testCase)    
              testCase.verifyThat(2, IsLessThan(3));
        end

        function testRange (testCase)    
              testCase.verifyThat(2, IsGreaterThan(1) & IsLessThan(3));
        end

    end   

end

% "import" functions
function c = IsGreaterThan(varargin)
c = matlab.unittest.constraints.IsGreaterThan(varargin{:});
end
function c = IsLessThan(varargin)
c = matlab.unittest.constraints.IsLessThan(varargin{:});
end