动态过滤测试
假设失败产生过滤测试.在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
块,考虑使用中的假设TestClassSetup
Block,同样过滤所有测试
方法,但不那么冗长且更有效。
下面的方法之一TestMethodSetup
块内ExampleTest.m
包含一个假设失败。
方法(TestMethodSetup)函数setupMethod1 (testCase) testCase.assumeEqual (1,0)%剩余的测试代码未执行结束函数setupMethod2 (testCase) disp ('*运行setupMethod2 *') testCase.assertEqual (1,1)结束结束
运行测试时,您将看到框架完成执行对象中的所有方法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
.正如预期的那样,测试框架执行了setupMethod2
3次,每次前一次测试
方法。
类设置和拆卸代码
的内部遇到假设失败TestCase
方法。TestClassSetup
或TestClassTeardown
属性,MATLAB滤波全部TestCase
类。
方法如下TestClassSetup
块内ExampleTest.m
包含一个假设失败。
方法(TestClassSetup)函数setupClass (testCase) testCase.assumeEqual (1,0)%剩余的测试代码未执行结束结束
类中的任何方法都没有执行TestMethodSetup
或测试
.
ts = matlab.unittest.TestSuite.fromClass(?ExampleTest);Res = ts.run;
运行ExampleTest ================================================================================ 所有测试在ExampleTest被过滤。细节 ================================================================================ 完成ExampleTest __________ 失败失败总结:名字不完整的原因(s ) ================================================================ ExampleTest /甲壳X过滤的假设。---------------------------------------------------------------- ExampleTest / X过滤的假设。---------------------------------------------------------------- ExampleTest / testC X过滤的假设。
的测试
而且TestMethodSetup
方法没有改变,但由于假设失败,所有内容都被过滤了TestClassSetup
块。
另请参阅
matlab.unittest.qualifications.Assumable
|matlab.unittest.TestCase
|matlab.unittest.TestResult