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

标签 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”宏是不是一个好习惯。 我欢迎所有关于此实现的建议和指示,如果它没有意义,请随时告诉我,我应该做一些完全不同的事情;)

最佳答案

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/

相关文章:

unit-testing - tensorflow Nose 测试: lots of debugging output,如何禁用

c#define 宏字符串连接

assembly - 汇编中的宏与过程

c++ - 路径验证的 spirit 语法

java - 如何从 C++ 应用程序启动 Java 应用程序、传递参数并等待 Java 应用程序的结果?

c++ - 将 100 纳秒转换为毫秒混淆

c++ - C++调用非虚成员函数的机制是什么?

unit-testing - 如何对 React 组件的方法进行单元测试?

java - jms集成开发的单元测试

c - 在可变参数宏中引用特定参数