主要内容

使用共享fixture编写测试

类可以跨测试类共享测试fixtureSharedTestFixtures属性。matlab.unittest.TestCase类。当您在一起运行的测试类之间共享一个fixture时,测试框架将为所有测试类设置一次fixture,并在所有测试类运行后将其拆除。属性指定夹具TestClassSetup方法块,测试框架在运行每个测试类之前设置fixture,并在运行每个测试类之后删除它。

此示例显示在创建测试时如何使用共享fixture。它展示了如何共享fixture,以便跨两个测试类将包含源代码的文件夹添加到路径中。测试类使用此fixture访问测试所需的源代码。

打开示例,使源代码和测试代码在当前文件夹中可用。

openExample (“matlab / WriteTestsUsingSharedTestFixturesExample”

DocPolynomTest类定义

类的内容DocPolynomTest类定义文件,该文件使用共享fixture访问定义DocPolynom类。有关的更多信息DocPolynom类并查看类代码,请参见用类表示多项式

classdef(SharedTestFixtures = {...matlab.unittest.fixtures.PathFixture (...fullfile (“. .”“fixture_example_source”)})...doc多项式测试< matlab.unittest.TestCase属性TextToDisplay =“待测方程:”结束方法(测试)函数testConstructor(testCase) p = DocPolynom([1 0 1]);testCase.verifyClass (p ? DocPolynom)结束函数testadd (testCase) p1 = DocPolynom([1 0 1]);p2 = DocPolynom([5 2]);实际= p1 + p2;expected = DocPolynom([1 5 3]);诊断= [testCase.]TextToDisplay..."(x²+ 1)+ (5*x + 2) = x²+ 5*x + 3"];testCase.verifyEqual(实际,预期,诊断)结束函数test乘法(testCase) p1 = DocPolynom([1 0 3]);p2 = DocPolynom([5 2]);实际= p1 * p2;expected = DocPolynom([5 2 15 6]);诊断= [testCase.]TextToDisplay...“(x ^ 2 + 3) * (5 * x + 2) x ^ 3 + 2 = 5 * * x ^ 2 + 15 * x + 6”];testCase.verifyEqual(实际,预期,诊断)结束结束结束

bankaccount类定义

类的内容bankaccount类定义文件,该文件使用共享fixture访问定义BankAccount类。有关的更多信息BankAccount类并查看类代码,请参见开发一起工作的类

classdef(SharedTestFixtures = {...matlab.unittest.fixtures.PathFixture (...fullfile (“. .”“fixture_example_source”)})...BankAccountTest < matlab.unittest.TestCase方法(测试)函数testConstructor(testCase) b = BankAccount(1234,100);testCase.verifyEqual (b.AccountNumber, 1234,...“构造器必须正确设置帐号。”100年)testCase.verifyEqual (b.AccountBalance,...“构造器必须正确设置帐户余额。”结束函数testConstructorNotEnoughInputs (testCase)导入matlab.unittest.constraints.ThrowsBankAccount testCase.verifyThat(@(),把(“MATLAB: minrhs”))结束函数testDeposit(testCase) b =银行账户(1234,100);b.deposit (25) testCase.verifyEqual (b.AccountBalance, 125)结束函数testWithdraw(testCase) b =银行账户(1234,100);b.withdraw (25) testCase.verifyEqual (b.AccountBalance, 75)结束函数testNotifyInsufficientFunds(testCase) callbackExecuted = false;函数testCallback(~,~) callbackExecuted = true;结束b =银行账户(1234,100);b.addlistener (“InsufficientFunds”, @testCallback);b.withdraw (50) testCase.assertFalse (callbackExecuted,..."回调应该还没有执行"b.withdraw(60) testCase.verifyTrue(callbackexecute,...“监听器回调应该已经触发。”结束结束结束

运行测试

在当前文件夹及其子文件夹中运行测试。测试框架将设置共享测试fixture,并在bankaccount而且DocPolynomTest类,并在运行测试后删除fixture。在本例中,所有测试都通过了。

runtests (“IncludeSubfolders”,真正的);
设置PathFixture:添加'C:\work\WriteTestsUsingSharedTestFixturesExample\fixture_example_source'到路径。__________运行BankAccountTest .....Done BankAccountTest __________正在运行doc多项式测试…Done docpolytest __________ tear down PathFixture:将路径恢复到原始状态。__________

另请参阅

||

相关的话题