c ++单元测试器中的自定义断言

时间:2012-12-23 22:15:08

标签: c++ unit-testing macros assert

我正在研究一个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'宏是不错的做法。 我欢迎所有关于此实现的建议和指示,并随时告诉我它是否没有意义,我应该做一些完全不同的事情;)

1 个答案:

答案 0 :(得分:0)

作为一个宏的INFO看起来非常好。另一种选择,我更喜欢有一个宏

#define TEST_ASSERT(condition, message) Tester::Asssert(condition, __FILE__, __LINE__, message)

或类似的东西。

如果你有不同数量的参数,这样的东西可能会起作用:

#define TEST_ASSERT(condition, ...) Tester::Asssert(condition, __FILE__, __LINE__, __VA_ARGS__)

假设您的编译器足够新,那就是。