主要内容

动态过滤测试

假设失败生产过滤测试。在里面matlab.unittest.testresult.类,这样的测试标记为不完整

由于通过使用假设过滤测试内容不会产生测试失败,因此它具有创建死亡测试代码的可能性。避免这种情况需要监视过滤的测试。

测试方法

如果在a内遇到假设故障测试用例方法与测试属性,整个方法被标记为过滤,但MATLAB®运行随后的测试方法。

以下类包含其中一个方法中的假设失败测试堵塞。

Classdef.exampletest 方法(测试)功能testa(testcase)testcase.verifytrue(true)结尾功能testb(testcase)testcase.assumeequal(0,1)%剩余的测试代码不会锻炼结尾功能testc(testcase)testcase.verifyfalse(true)结尾结尾结尾

自从此以来testb.方法包含假设故障,当您运行测试时,测试框架过滤器测试并将其标记为不完整。假设失败后testb.,测试框架进行并执行testc.,包含验证失败。

ts = matlab.unittest.testsuite.fromclass(?exampletest);res = ts.run;
正在运行的excepletest。================================================================================过滤了Excepletest / testb。细节================================================================================。================================================================================验证失败在excepletest / testc中失败。---------------------框架诊断:---------------------verifyFalse失败了。- >值必须评估为“false”。实际逻辑:1 ----------------堆栈信息:-----------------在C:\ Work \ exampletest中.m(exampletest.testc)在11 ================================================================================。完成__________失败摘要:名称失败不完整原因(s)================================================================通过假设过滤的Excepletest / testb x。 ---------------------------------------------------------------- ExampleTest/testC X Failed by verification.

如果你检查测试结果,您注意到由于假设故障而导致的测试失败测试和未完成的测试。

res.
RES = 1×3 TestResult数组具有属性:名称传递失败的不完整持续时间详细信息总计:1传递,1失败,1个不完整。2.4807秒测试时间。

测试框架会跟踪不完整的测试,以便您可以监视过滤的无限测试代码的测试。您可以查看有关这些测试的信息测试结果目的。

Res([res.incomplete])
ans = testResult属性:名称:'exampletest / testb'传递:0失败:0不完整:1持续时间:2.2578详细信息:[1×1结构]总计:0传递,0失败,1个不完整。2.2578秒测试时间。

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

TSFiltered = TS([Res.Incomplete])
tsfiltered = test属性:名称:'exampletest / testb'程序:'testb'testclass:“exampletest”basefolder:'c:\ works'参数化:[0×0 matlab.unittest.parameters.preparameter] SharedTestFixtures:[0×0×0 matlab.unittest.fixtures.emptyfixture]标签:{1×0小区}测试包括:0参数化,0个共享测试夹具类,0标记。

方法设置和拆除代码

如果在内部遇到假设故障测试用例方法与testmethodetup.属性,MATLAB过滤该实例要运行的方法。如果测试使用来自内部的假设testmethodetup.阻止,考虑使用假设testclasssetup.块,同样过滤所有测试在课堂上的方法但不太详细,更有效。

以下方法之一testmethodetup.块内exampletest.m.包含假设失败。

方法(testmethodetup)功能setupmethod1(testcase)testcase.assumeequal(1,0)%剩余的测试代码不会锻炼结尾功能setupmethod2(testcase)disp('*运行setupmethod2 *')testcase.asterqual(1,1)结尾结尾

更新excepletest.班级定义

运行测试时,您会看到框架完成执行所有方法testmethodetup.块不包含假设故障,而且它标记为所有方法测试堵塞。

ts = matlab.unittest.testsuite.fromclass(?exampletest);res = ts.run;
运行示例================================================================================过滤了excepletest / testa。细节================================================================================ *运行setupmethod2 *。================================================================================过滤了Excepletest / testb。细节================================================================================ *运行setupmethod2 *。================================================================================过滤了exceletest / testc。细节================================================================================ * Running setupMethod2 * . Done ExampleTest __________ Failure Summary: Name Failed Incomplete Reason(s) ================================================================ ExampleTest/testA X Filtered by assumption. ---------------------------------------------------------------- ExampleTest/testB X Filtered by assumption. ---------------------------------------------------------------- ExampleTest/testC X Filtered by assumption.

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

类设置和拆除代码

如果在a内遇到假设故障测试用例方法与testclasssetup.或者testclassteardown.属性,matlab过滤整个测试用例班级。

以下方法testclasssetup.块内exampletest.m.包含假设失败。

方法(TestClassSetup)功能setupclass(testcase)testcase.assumeequal(1,0)%剩余的测试代码不会锻炼结尾结尾

更新excepletest.班级定义

运行测试时,您会看到框架不执行任何方法testmethodetup.或者测试

ts = matlab.unittest.testsuite.fromclass(?exampletest);res = ts.run;
运行示例================================================================================过滤了excepletest中的所有测试。细节================================================================================完成考试__________失败摘要:姓名失败不完整原因(s)================================================================通过假设过滤的Exampletest / testa x。------------------------------------------------------------------------------ exampletest / testb x通过假设过滤。------------------------------------------------------------------------------ exampletest / testc x通过假设过滤。

测试testmethodetup.方法没有改变,但由于假设失败,所有内容都被过滤testclasssetup.堵塞。

也可以看看

||