每个套件的升压测试初始化(不是案例)
我需要初始化一些变量,这些变量在 BOOST_AUTO_TEST_SUITE 中是“全局”的 因此,它们的构造函数将在套件启动时被调用,而它们的析构函数将在最后一个相应的 BOOST_AUTO_TEST_CASE 完成后立即被调用,
有人知道我该怎么做吗?看来全球赛程不是一个解决方案......
I need to init some variables, which are "global" inside a BOOST_AUTO_TEST_SUITE
so their constructors will be called when the suite starts and their destructors will be called right after the last corresponding BOOST_AUTO_TEST_CASE is finished
does someone know how I can do it? Looks like global fixtures is not a solution...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为 Boost 测试库不可能做到这一点。全局装置实际上是全局的,即它们在每次测试运行时实例化,而不是按套件实例化。
除此之外,我认为这样的设置会违反测试隔离原则。您能解释一下为什么在套件范围内需要“全局”变量吗?
I don't think it's possible with the Boost Test Library. Global fixtures are really global, i.e. they are instantiated per test run, not per suite.
Apart from that, I think that such a setup would violate test isolation principles. Can you explain why you need "global" variables at the suite scope?
您可以使用全局装置:
http:// www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/tests_organization/fixtures/global.html
只是替换
为
那么它就会像你期望的那样工作。
--
符号39
You can use global fixtures:
http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/tests_organization/fixtures/global.html
just replace
with
Then it will work like you expect.
--
sym39
我不太确定接受的答案是否正确,因为如果我使用 来自 boost 网站的测试代码:
那么预期的调用顺序应该是:
但实际上是这样的:
我不知道这是否是一个错误,因为通过阅读
BOOST_FIXTURE_TEST_SUITE
文档,我预计正是第一个行为。如果我使用BOOST_FIXTURE_TEST_CASE
,我还可以获得第二种行为。I'm not quite sure if the accepted answer is correct, because if I use the test code from the boost web site:
Then the expected call sequence should be:
But in fact it is this:
I don't know if this is a bug, because from reading the
BOOST_FIXTURE_TEST_SUITE
documentation, I would expect exactly the first behavior. I can also get the second behavior if I useBOOST_FIXTURE_TEST_CASE
.供将来参考:
这已添加到库中,我相信从 1.36 开始。
For future reference:
This has been added to the library, as of 1.36 I believe.