主要内容

创建自定义约束

此示例演示如何创建自定义约束,以确定给定值的大小是否与期望值相同。

在当前文件夹中的文件中,创建一个名为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]

另请参阅

||||

相关的话题