主要内容

创建自定义布尔约束

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

在当前文件夹中的一个文件中,创建一个名为HasSameSizeAs这源于matlab.unittest.constraints.BooleanConstraint类。类构造函数接受一个期望值,其大小与实际值的大小进行比较。期望值存储在ValueWithExpectedSize财产。建议的做法是使BooleanConstraint实现是不可变的,所以设置这个属性SetAccess属性来不可变的

classdefHasSameSizeAs < matlab.unittest.constraints.BooleanConstraint属性(SetAccess = immutable) ValueWithExpectedSize结束方法函数约束= HasSameSizeAs(value)约束。ValueWithExpectedSize = value;结束结束结束

在一个方法块与私人访问,定义一个帮助器方法sizeMatchesExpected这决定了实际值和期望值是否具有相同的大小。此方法由其他约束方法调用。

方法(Access = private)函数bool = sizeematchesexpected (constraint,actual) bool = isequal(size(actual),size(constraint. valuewithexpectedsize));结束结束

matlab.unittest.constraints.BooleanConstraint类的子类matlab.unittest.constraints.Constraint类。类派生的类BooleanConstraint类的方法约束类。在一个方法块,覆盖satisfiedBy而且getDiagnosticFor方法。的satisfiedBy实现必须包含比较逻辑并返回逻辑值。的getDiagnosticFor实现必须根据约束计算实际值,并提供诊断对象。在这个例子中,getDiagnosticFor返回一个StringDiagnostic对象。

方法函数bool = satisedby (constraint,actual) bool = constraint. sizematchesexpected (actual);结束函数diag = getDiagnosticFor(constraint,actual)导入matlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(actual) diag = StringDiagnostic(“HasSameSizeAs过去了。”);其他的diag = StringDiagnostic(sprintf(...“HasSameSizeAs失败了。\nActual Size: [%s]\nExpectedSize: [%s]'...int2str(大小(实际)),...int2str(大小(constraint.ValueWithExpectedSize))));结束结束结束

派生自BooleanConstraint必须实现getNegativeDiagnosticFor方法。此方法必须提供诊断当约束为负数时,对象。

覆盖getNegativeDiagnosticFor在一个方法块与受保护的访问。

方法(访问=受保护)函数diag = getNegativeDiagnosticFor(constraint,actual) importmatlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(actual) diag = StringDiagnostic(sprintf(...'Negated hassamesizas failed。\nSize [%s] '...“实际价值和预期价值相同”...“但不应该这样。”), int2str(大小(实际))));其他的diag = StringDiagnostic(“否定了hassamesizas通过。”);结束结束结束

作为实现所需方法的交换,约束继承相应的方法而且,重载,所以它可以与其他组合BooleanConstraint对象或否定。

HasSameSizeAs类定义

的完整代码HasSameSizeAs类。

classdefHasSameSizeAs < matlab.unittest.constraints.BooleanConstraint属性(SetAccess = immutable) ValueWithExpectedSize结束方法函数约束= HasSameSizeAs(value)约束。ValueWithExpectedSize = value;结束函数bool = satisedby (constraint,actual) bool = constraint. sizematchesexpected (actual);结束函数diag = getDiagnosticFor(constraint,actual)导入matlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(actual) diag = StringDiagnostic(“HasSameSizeAs过去了。”);其他的diag = StringDiagnostic(sprintf(...“HasSameSizeAs失败了。\nActual Size: [%s]\nExpectedSize: [%s]'...int2str(大小(实际)),...int2str(大小(constraint.ValueWithExpectedSize))));结束结束结束方法(访问=受保护)函数diag = getNegativeDiagnosticFor(constraint,actual) importmatlab.unittest.diagnostics.StringDiagnostic如果constraint.sizeMatchesExpected(actual) diag = StringDiagnostic(sprintf(...'Negated hassamesizas failed。\nSize [%s] '...“实际价值和预期价值相同”...“但不应该这样。”), int2str(大小(实际))));其他的diag = StringDiagnostic(“否定了hassamesizas通过。”);结束结束结束方法(Access = private)函数bool = sizeematchesexpected (constraint,actual) bool = isequal(size(actual),size(constraint. valuewithexpectedsize));结束结束结束

预期尺寸试验

在命令提示符下,为交互测试创建一个测试用例。

进口matlab.unittest.TestCase进口matlab.unittest.constraints.HasLengthtestCase = testCase . forinteractiveuse;

测试一个通过的案例。测试通过是因为其中一个条件下,HasLength (5),是真的。

testCase.verifyThat(zeros(5),HasLength(5) | ~HasSameSizeAs(repmat(1,5)))
验证通过。

测试一个失败的案例。测试失败是因为其中一个而且条件下,~ HasSameSizeAs (repmat(1、5)),是假的。

testCase.verifyThat(zeros(5),HasLength(5) & ~HasSameSizeAs(repmat(1,5)))
验证失败。--------------------- 框架的诊断 : --------------------- AndConstraint失败了。——> +[第一个条件]:| HasLength已通过。| |实际值:| 0 0 0 0 0 | 0 0 0 0 0 | 0 0 0 0 0 | 0 0 0 0 0 0 0 | 0 0 0 0 0 0 |期望长度:| 5——> AND +[第二个条件]:| Negated HasSameSizeAs failed。|实际值和期望值的大小[5 5]相同,但不应该相同。-+---------------------

另请参阅

||||||

相关的话题