使用共享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:将路径恢复到原始状态。__________
另请参阅
matlab.unittest.TestCase
|matlab.unittest.fixtures.Fixture
|matlab.unittest.fixtures.PathFixture