主要内容

动态过滤测试

假设失败产生过滤测试.在matlab.unittest.TestResult类,这样的测试被标记不完整的

因为通过使用假设过滤测试内容不会产生测试失败,它有可能创建死测试代码。要避免这种情况,就需要监视经过筛选的测试。

测试方法

的内部遇到假设失败TestCase方法。测试属性,整个方法被标记为过滤,但MATLAB®运行后续的测试方法。

类中的一个方法中包含假设失败测试块。

classdefExampleTest < matlab.unittest.TestCase方法(测试)函数外种皮(testCase) testCase.verifyTrue(真正的)结束函数的(testCase) testCase.assumeEqual (0, 1)%剩余的测试代码未执行结束函数testC (testCase) testCase.verifyFalse(真正的)结束结束结束

方法包含假设失败,当您运行测试时,测试框架将筛选该测试并将其标记为不完整。假设失败之后,测试框架继续并执行testC,提示验证失败。

ts = matlab.unittest.TestSuite.fromClass(?ExampleTest);Res = ts.run;
运行ExampleTest。================================================================================ ExampleTest /的过滤。细节  ================================================================================ .================================================================================ 验证失败ExampleTest / testC。--------------------- 框架的诊断 : --------------------- verifyFalse失败了。——>该值必须计算为“false”。实际的逻辑:1  ------------------ 堆栈信息 : ------------------ 在C: \ \ ExampleTest工作。在11米(ExampleTest.testC)  ================================================================================ .完成ExampleTest  __________ 失败失败总结:名字不完整的原因(s ) ================================================================ ExampleTest / X过滤的假设。---------------------------------------------------------------- ExampleTest / testC X验证失败。

如果你仔细研究TestResult,您注意到有一个通过的测试,一个失败的测试,以及一个由于假设失败而没有完成的测试。

res
res = 1×3 TestResult数组,属性:Name Passed Failed Incomplete Duration Details总计:1 Passed, 1 Failed, 1 Incomplete. 2.4807秒测试时间。

测试框架跟踪不完整的测试,以便您可以监视筛选后的未执行测试代码的测试。信息中可以查看有关这些测试的信息TestResult对象。

res ([res.Incomplete])
ans = TestResult with属性:名称:'ExampleTest/testB'通过:0失败:0不完整:1持续时间:2.2578详细信息:[1×1 struct]总计:0通过,0失败,1不完整。2.2578秒测试时间。

若要仅从筛选的测试中创建经过修改的测试套件,请从原始测试套件中选择不完整的测试。

tsFiltered = ts([res.Incomplete])
tsFiltered = Test with properties: Name: 'ExampleTest/testB' ProcedureName: 'testB' TestClass: "ExampleTest" BaseFolder: 'C:\work'参数化:[0×0 matlab.unittest.parameters.]EmptyParameter] SharedTestFixtures: [0×0 matlab.unittest.fixtures.]测试包括:0参数化,0共享测试夹具类,0标签。

方法设置和拆卸代码

的内部遇到假设失败TestCase方法。TestMethodSetup属性,MATLAB对该实例要运行的方法进行筛选。如果测试使用的假设来自TestMethodSetup块,考虑使用中的假设TestClassSetupBlock,同样过滤所有测试方法,但不那么冗长且更有效。

下面的方法之一TestMethodSetup块内ExampleTest.m包含一个假设失败。

方法(TestMethodSetup)函数setupMethod1 (testCase) testCase.assumeEqual (1,0)%剩余的测试代码未执行结束函数setupMethod2 (testCase) disp ('*运行setupMethod2 *') testCase.assertEqual (1,1)结束结束

更新ExampleTest类定义

运行测试时,您将看到框架完成执行对象中的所有方法TestMethodSetup中的所有方法都标记为不完整测试块。

ts = matlab.unittest.TestSuite.fromClass(?ExampleTest);Res = ts.run;
运行ExampleTest  ================================================================================ ExampleTest /甲壳是过滤。细节  ================================================================================ * 运行setupMethod2 *。================================================================================ ExampleTest /的过滤。细节  ================================================================================ * 运行setupMethod2 *。================================================================================ ExampleTest / testC过滤。细节  ================================================================================ * 运行setupMethod2 *。完成ExampleTest  __________ 失败失败总结:名字不完整的原因(s ) ================================================================ ExampleTest /甲壳X过滤的假设。---------------------------------------------------------------- ExampleTest / X过滤的假设。---------------------------------------------------------------- ExampleTest / testC X过滤的假设。

测试方法没有改变,但由于假设失败,所有3个都被过滤了TestMethodSetup块。测试框架执行TestMethodSetup阻塞没有假设失败,例如setupMethod2.正如预期的那样,测试框架执行了setupMethod23次,每次前一次测试方法。

类设置和拆卸代码

的内部遇到假设失败TestCase方法。TestClassSetupTestClassTeardown属性,MATLAB滤波全部TestCase类。

方法如下TestClassSetup块内ExampleTest.m包含一个假设失败。

方法(TestClassSetup)函数setupClass (testCase) testCase.assumeEqual (1,0)%剩余的测试代码未执行结束结束

更新ExampleTest类定义

类中的任何方法都没有执行TestMethodSetup测试

ts = matlab.unittest.TestSuite.fromClass(?ExampleTest);Res = ts.run;
运行ExampleTest  ================================================================================ 所有测试在ExampleTest被过滤。细节  ================================================================================ 完成ExampleTest  __________ 失败失败总结:名字不完整的原因(s ) ================================================================ ExampleTest /甲壳X过滤的假设。---------------------------------------------------------------- ExampleTest / X过滤的假设。---------------------------------------------------------------- ExampleTest / testC X过滤的假设。

测试而且TestMethodSetup方法没有改变,但由于假设失败,所有内容都被过滤了TestClassSetup块。

另请参阅

||