// in someFile.h or someFile.cpp
TEST()
{
"example test", []
{
EXPECT(0 == 1);
}
}
TEST_END()
// in main.cpp
int main() { ssvu::Test::runAllTests(); }
#define TEST() static RunOnCtor UNIQUENAME(__LINE__) { []{ getStaticTests().push_back({
#define TEST_END() });}};
struct RunOnCtor { RunOnCtor(std::function<void()> f) { f(); } };
我创建了一些单元测试宏,它们在头文件(对我的仅头文件库有用)和源文件中都有效。
TEST()
创建一个 的静态实例RunOnCtor
,该实例在构造时执行一个 lambda,该 lambda 将测试 lambda插入到一个std::vector
测试中。runAllTests()
运行该向量中的每个测试。
我创建了一个DISABLE_TEST
简单地放在lambdareturn;
开头的定义RunOnCtor
,因此不会向内部向量添加任何测试。但是,我想在禁用测试时防止不必要的静态对象构造。
有没有办法完全忽略和之间的TEST()
一切TEST_END()
?就像评论它一样。或者清空RunOnCtor
(空结构)会使编译器避免静态结构?