Har*_*ich 7 c++ unit-testing cppunit
我的组织正在使用CppUnit,我正在尝试使用不同的参数运行相同的测试.在测试中运行循环不是一个好选择,因为任何失败都会中止测试.我已经看过TestDecorator并TestCaller但也似乎真的适合.代码示例会很有帮助.
在CppUnit中似乎不可能直接参数化测试用例(参见此处和此处).但是,您有几个选择:
RepeatedTest您可以巧妙地使用内置RepeatedTest装饰器.这允许测试用例多次运行(尽管没有参数化).
我承认自己从来没有使用过这个,但也许你可以让RepeatedTest驱动器有一些看门人功能,这会(使用类静态变量,也许?)每次运行都会选择不同的输入.它会依次调用您想要使用该值作为输入进行测试的真实函数.
TestCase子类CppUnit的SourceForge页面上的一个人声称编写了一个子类TestCase,它将以任意次数运行特定测试,尽管方式与RepeatedTest类提供的方式略有不同.可悲的是,海报简单地描述了创建类的动机,但没有提供源代码.但是,有人要求与个人联系以获取更多详情.
最直接(但最不自动化)的方法是创建一个辅助函数,将您想要传递的参数传递给您的"真实"函数,然后有很多单独的测试用例.每个测试用例都会使用不同的值调用辅助函数.
如果您选择上面列出的前两个选项中的任何一个,我会有兴趣了解您的体验.
I'm not a C++ programmer but I can help with the unit-test concept:
测试用例旨在独立运行,不依赖于外部参数。此外,您应该将测试用例的数量保持在最低限度,以覆盖大部分代码。然而,在某些情况下(我已经处理过一些),一些测试看起来是相同的,仅在一些次要参数上有所不同。那么最好的选择是编写一个接受您正在讨论的参数的固定装置,然后为每个参数创建一个测试用例,并用它调用固定装置。一个通用示例如下:
class MyTestCase
# this is your fixture
def check_special_condition(param)
some
complex
tests
end
# these are your test-cases
def test_1
check_special_condition("value_1")
end
def test_2
check_special_condition("value_2")
end
end
Run Code Online (Sandbox Code Playgroud)
否则,您就不会编写真正的测试用例,因为它们应该是可重现的,而无需执行它们的人了解太多。我想有一些参数作为测试的输入都很重要。那么为什么不在自己的测试用例中明确每一项呢?这也是最好的记录方式,而不是编写单独的文档来指导程序员几年后阅读代码。
| 归档时间: |
|
| 查看次数: |
6031 次 |
| 最近记录: |