创建自定义约束
此示例演示如何创建自定义约束,以确定给定值的大小是否与期望值相同。
在当前文件夹中的文件中,创建一个名为HasSameSizeAs
这源于matlab.unittest.constraints.Constraint
类。类构造函数接受一个期望值,其大小将与实际值的大小进行比较。期望值存储在ValueWithExpectedSize
财产。推荐的做法是约束
实现是不可变的,所以设置属性SetAccess
属性来不可变的
.
classdefHasSameSizeAs < matlab.unittest.constraints.Constraint属性ValueWithExpectedSize结束方法函数constraint = HasSameSizeAs(值)约束。ValueWithExpectedSize = value;结束结束结束
在一个方法
块与私人
访问,定义一个helper方法sizeMatchesExpected
这决定了实际值和期望值是否具有相同的大小。此方法由其他约束方法调用。
方法(访问=私有)函数bool = sizeMatchesExpected(constraint,actual) bool = isequal(size(actual),size(constraint. valuewithexpectedsize));结束结束
类派生的类matlab.unittest.constraints.Constraint
类必须重写satisfiedBy
方法。此方法必须包含比较逻辑并返回逻辑值。在一个方法
块,实现satisfiedBy
通过调用助手方法。如果实际大小和期望大小相等,则该方法返回真正的
.
方法函数bool = satisfiedBy(constraint,actual) bool = constraint. sizematchesexpected (actual);结束结束
类派生的类matlab.unittest.constraints.Constraint
类还必须重写getDiagnosticFor
方法。该方法必须根据约束计算实际值,并提供一个诊断
对象。在这个例子中,getDiagnosticFor
返回一个StringDiagnostic
对象。
方法函数diag = getdiagnostics for(约束,实际)导入matlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(实际)diag = StringDiagnostic(“HasSameSizeAs过去了。”);其他的diag = StringDiagnostic(sprintf)...“HasSameSizeAs失败了。\nActual Size: [%s]\ expectedsize: [%s]',...int2str(大小(实际)),...int2str(大小(constraint.ValueWithExpectedSize))));结束结束结束
HasSameSizeAs类定义
的完整代码HasSameSizeAs
类。
classdefHasSameSizeAs < matlab.unittest.constraints.Constraint属性ValueWithExpectedSize结束方法函数constraint = HasSameSizeAs(值)约束。ValueWithExpectedSize = value;结束函数bool = satisfiedBy(constraint,actual) bool = constraint. sizematchesexpected (actual);结束函数diag = getdiagnostics for(约束,实际)导入matlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(实际)diag = StringDiagnostic(“HasSameSizeAs过去了。”);其他的diag = StringDiagnostic(sprintf)...“HasSameSizeAs失败了。\nActual Size: [%s]\ expectedsize: [%s]',...int2str(大小(实际)),...int2str(大小(constraint.ValueWithExpectedSize))));结束结束结束方法(访问=私有)函数bool = sizeMatchesExpected(constraint,actual) bool = isequal(size(actual),size(constraint. valuewithexpectedsize));结束结束结束
预期尺寸测试
在命令提示符下,为交互测试创建一个测试用例。
进口matlab.unittest.TestCasetestCase = testCase . forinteractiveuse;
测试一个通过的案例。
testCase.verifyThat(0(5)、HasSameSizeAs (repmat(1、5)))
验证通过。
测试一个失败的案例。
testCase.verifyThat (0 (5) HasSameSizeAs((1、5)))
验证失败。--------------------- 框架的诊断 : --------------------- HasSameSizeAs失败了。实际尺寸:[5 5]ExpectedSize: [1 5]
另请参阅
matlab.unittest.constraints.Constraint
|satisfiedBy
|getDiagnosticFor
|matlab.unittest.diagnostics.StringDiagnostic
|matlab.unittest.diagnostics.Diagnostic