简单的cpp单元测试
参考:http://www.cppblog.com/vczh/archive/2010/06/27/118829.html
一个really simple的测试“框架”?主要利用全局变量初始化在main函数之前的特性。
// vczh_test.h
#pragma once
#define TEST_CASE(name) \
extern void TEST_CASE_##name(); \
namespace vczh_unit_test_executors { \
class TEST_CASE_RUNNER_##name { \
public: \
TEST_CASE_RUNNER_##name() { \
try { \
TEST_CASE_##name(); \
} catch (const char* err) { \
fprintf(stderr, "%s:%d %s\n", __FILE__, __LINE__, err); \
} \
} \
} TEST_CASE_RUNNER_##name##_INST; \
} \
void TEST_CASE_##name()
#define TEST_ASSERT(e) do { if (!(e)) throw "TEST_ASSERT failed: " #e; } while(0)// vczh_test.cpp
#include "vczh_test.h"
#include <iostream>
int main() { return 0; }
TEST_CASE(foo) {
std::cout << "running test ...\n";
TEST_ASSERT(1==2);
std::cout << "running end ...\n";
}测试:
$ ./a.out
running test ...
vczh_test.cpp:6 TEST_ASSERT failed: 1==2可以看到assert失败之后的代码没有执行。