how to import package for several tests in unittest framework?
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I've created a TestCase class and I'd like to import StringDiagnostic for each of the test methods in one go - meaning without having to import it for each test desperately.
This is how it looks now:
classdef MyTestClass < matlab.unittest.TestCase
properties(ClassSetupParameter)
prop1 = num2cell(1:2);
end
properties
actual;
expected;
end
methods(TestClassSetup)
get_actual_and_expected(test_case);
end
methods(Test)
function test1(test_case,prop1)
import matlab.unittest.diagnostics.StringDiagnostic;
testCase.verifyNotEmpty(testCase.actual,StringDiagnostic('Struct is empty'));
end
function test2(test_case,prop1)
import matlab.unittest.diagnostics.StringDiagnostic;
testCase.verifyNotEmpty(testCase.expected,StringDiagnostic('Struct is empty'));
end
end
I'd like to not have to write the line "import matlab.unittest.diagnostics.StringDiagnostic;" in each test function but only once.
I've also tried to put in in TestMethodSetup block which didn't work.
Thank you!
Jack
0 个评论
回答(1 个)
Andy Campbell
2018-6-13
编辑:Andy Campbell
2018-6-13
Hi Jack,
This is currently a limitation in the MATLAB language, which restricts the import scope to functions and methods. There is no way currently to import across an entire "file".
As a workaround, you can use local functions to get import-like behavior, like so:
classdef MyTestClass < matlab.unittest.TestCase
properties(ClassSetupParameter)
prop1 = num2cell(1:2);
end
properties
actual;
expected;
end
methods(TestClassSetup)
get_actual_and_expected(test_case);
end
methods(Test)
function test1(test_case,prop1)
testCase.verifyThat(testCase.actual, ~IsEmpty, StringDiagnostic('Struct is empty'));
end
function test2(test_case,prop1)
testCase.verifyThat(testCase.expected, ~IsEmpty, StringDiagnostic('Struct is empty'));
end
function test3(test_case,prop1)
testCase.verifyThat(testCase.actual, IsEqualTo(testCase.expected), ...
StringDiagnostic('Actual should be equal to expected.'));
end
end
end
% "import" functions
function d = StringDiagnostic(varargin)
d = matlab.unittest.diagnostics.StringDiagnostic(varargin{:});
end
function c = IsEmpty(varargin)
c = matlab.unittest.constraints.IsEmpty(varargin{:});
end
function c = IsEqualTo(varargin)
c = matlab.unittest.constraints.IsEqualTo(varargin{:});
end
Note, in this case though you don't need to import String Diagnostic at all. If you just use:
testCase.verifyNotEmpty(testCase.expected,'Struct is empty');
The string your provided will be converted to a StringDiagnostic automatically by the framework.
Hope that helps!
Andy
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Testing Frameworks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!