我正在研究一个 C++ 单元测试器(主要是练习)并且对我的实现有一些疑问。 我希望能够重载我的自定义断言,因此我决定将它们实现为我包装在命名空间中的函数。
我目前的实现如下:
Tester.h
#include <string>
#define INFO __FILE__, __LINE__
namespace Tester
{
void Assert(char const* input, char const* file_path, int line_number, std::string error_message);
...more overloaded Asserts and some Log functions...
}
当我调用函数时:
#include "Tester.h"
...code...
Tester::Assert(false, INFO, "Some message");
...code...
这行得通,但我不确定“INFO”宏是不是一个好习惯。 我欢迎所有关于此实现的建议和指示,如果它没有意义,请随时告诉我,我应该做一些完全不同的事情;)
最佳答案
INFO 作为一个宏似乎非常好。我更喜欢的另一种方法是使用宏
#define TEST_ASSERT(condition, message) Tester::Asssert(condition, __FILE__, __LINE__, message)
或类似的东西。
如果你有不同数量的参数,这样的事情可能会起作用:
#define TEST_ASSERT(condition, ...) Tester::Asssert(condition, __FILE__, __LINE__, __VA_ARGS__)
假设您的编译器足够新,就是这样。
关于c++ - C++ 单元测试器中的自定义断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015131/