以下是一个简单的C++单元测试框架示例:
```
#include
#include
#include
class Test {
public:
Test(const std::string& name) : name_(name) {}
virtual void run() = 0;
const std::string& name() const { return name_; }
private:
std::string name_;
};
class TestSuite {
public:
void add(Test* test) { tests_.push_back(test); }
void run() {
for (auto test : tests_) {
std::cout << "Running test: " << test->name() << std::endl;
test->run();
}
}
private:
std::vector tests_;
};
#define ASSERT_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "Assertion failed: " #condition << std::endl; \
} \
} while (false)
class ExampleTest : public Test {
public:
ExampleTest() : Test("ExampleTest") {}
void run() override {
ASSERT_TRUE(1 + 1 == 2);
ASSERT_TRUE(2 * 3 == 6);
ASSERT_TRUE(4 / 2 == 2);
}
};
int main() {
TestSuite suite;
suite.add(new ExampleTest());
suite.run();
return 0;
}
```
该框架包含了一个 `Test` 类和一个 `TestSuite` 类。`Test` 类是一个抽象基类,定义了一个纯虚函数 `run()`,用于执行测试。`TestSuite` 类用于管理多个测试,并提供一个 `run()` 函数来运行所有测试。
在测试中,我们可以使用 `ASSERT_TRUE` 宏来断言条件是否为真。如果条件不成立,该宏将输出一条错误消息。
在 `main()` 函数中,我们创建了一个 `TestSuite` 对象,并向其中添加了一个 `ExampleTest` 对象。然后,我们调用 `run()` 函数来运行所有测试。
这只是一个简单的示例框架,您可以根据自己的需求进行扩展和修改。