从内存中清除TestCase类如何?

8视图(30天)
吉姆Svensson
吉姆Svensson 2020年12月2日
评论道: 吉姆Svensson 2021年4月12日
我有一个基于类的测试用例,如下所示(简体):
classdefmy_test < matlab.unittest.TestCase
属性(TestParameter)
test_params = some_package.get_test_parameters ();
结束
方法(测试)
函数test_params basic_test (tc)
结束
结束
结束
由get_test_parameters()返回的数据被其他测试用例和在其他地方。
问题是,如果我改变这个函数返回的数据并重新运行测试用例test_params不更新,因为Matlab只初始化一次,当它my_test类加载到内存中。很好,但我需要确保当我运行测试它使用最新数据get_test_params()函数。做这个最好的方法是什么?完成各种测试用例的运行在另一个顶级的功能。
一些选项,但不理想:
  • “明确类”问题。清除所有类和其他的东西,如全局变量和持久变量。我真的不希望这样。为什么“明确类”结算除了课吗?更愚蠢的是“清除所有”并不明确。我不喜欢撒谎的函数。
  • 一个清晰的my_test问题。但实际上my_test也在包和“明确”又奇怪。即使是在一个包你应该使用“明确my_class”,如果我有多个具有相同名称的类,但在不同的包你不能控制哪个类清除。而且相同的语法用于清晰的一个变量,所以如果我有一个变量my_test也将被清除。
顶层文件中运行测试用例我的测试用例创建一个数组
matlab.unittest.TestSuite.fromPackage (package_of_test_cases“IncludingSubpackages”,真正的)
和运行。我想要一个好方法,以确保所有的类的包被清除和重载运行前的测试用例。什么好主意吗?

答案(2)

Preethi Pandian
Preethi Pandian 2021年4月9日
嗨,吉姆,
所以我相信你有一个函数get_test-parameters()和你想要检索的最新值测试点的功能。
测试装置可以帮助解决你目前面临的情况。测试装置的setup和teardown代码设置进行预测的系统状态,并返回到原始状态后运行测试。
或许你可以试着用TestMethodSetup运行之前执行每个testCase和检索的最新值get_test_parameters()函数。
您的测试可以改变这样的:
classdefmy_test < matlab.unittest.TestCase
属性(TestParameter)
test_params;
结束
方法(TestMethodSetup)
test_params = some_package.get_test_parameters ();
结束
方法(测试)
函数test_params basic_test (tc)
结束
结束
结束
同样,你可以使用TestMethodTeardown或TestClassTeardown清除任何数据后分别执行每个测试用例或测试类。
您可以参考以下有关测试装置的更多信息:
希望这有助于
问候,
Preethi

史蒂文的主
史蒂文的主 2021年4月9日
你可能会发现 这个新特性介绍了R2021a发布 有用的。
1评论
吉姆Svensson
吉姆Svensson 2021年4月12日
谢谢你!看起来像一些有用的东西。

登录置评。

类别

找到更多的在扩展单元测试框架帮助中心文件交换

s manbetx 845


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!