我正在使用UnitTest ++来测试C ++代码。
在我的测试中,有一组我多次重复的测试。我想要的是实用程序功能来执行这些测试。简而言之,我想接受这个:
TEST( foo ) {
Foo one;
Foo two;
// init one & two
// lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles
}
TEST( bar ) {
Foo one;
Foo two;
// init one & two
// lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles
}
并使用此:
void blah( const Foo& one, const Foo& two ) {
// lots of CHECK_CLOSE(one.bar, two.bar, 1e-5);
}
TEST( foo ) {
Foo one;
Foo two;
// init one & two
blah(one, two);
}
TEST( bar ) {
Foo one;
Foo two;
// init one & two
blah(one, two);
}
由于UnitTest ++的宏操作,这不起作用。解决这个问题的最佳方法是什么?
编辑:我现在无法查看的一些想法。
struct
中的效用函数,我是否可以从此函数中调用UnitTest ++宏?答案 0 :(得分:2)
写一个宏来做。不要让“宏是邪恶的”咒语向你隐瞒这一事实:宏旨在生成重复的代码。
答案 1 :(得分:0)
我建议不要这样做,因为发生的事情是你丢失了很多关于哪个测试失败的信息,包装函数现在包含了两个或更多测试的功能,所以当它失败时你必须追溯回来看看测试失败的原因是什么。
答案 2 :(得分:0)
使您的常用检查功能返回bool。然后在每个TEST中检查或确定常用函数的结果。