Tom*_*han 8 c++ unit-testing iostream
我试图找出一种很好的方法来单元测试我operator<<在C++中的实现.我有一个实现运算符的类,并给定一个具有特定状态的实例,我想检查输出是否是我想要的.
这是我的代码(头文件):
class Date {
virtual int year() const { return 1970; };
virtual int month() const { return 1; };
virtual int day() const { return 1; };
friend std::ostream &operator<<(std::ostream &os, const Date &d);
};
std::ostream &operator<<(std::ostream &os, const Date &d) {
os << d.year() << "-" << d.month() << "-" << d.day();
return os;
};
Run Code Online (Sandbox Code Playgroud)
现在,在我的单元测试方法中,我可以做Date d; cout << d;并验证何时运行测试输出是否正确.但是,我更倾向于以编程方式验证这一点,因此我不必在最终报告中查看测试输出(希望说"0测试失败!").
我对C++很新,所以除了输入和输出之外,我从来没有真正使用过流.
我该如何做到这一点?
Rei*_*ica 22
您可以使用a std::stringstream来保存结果,然后调用str()它来获取字符串:
#include "Date.h"
#include <iostream>
#include <sstream>
int main() {
Date d;
std::stringstream out;
out << d;
if(out.str() == "1970-1-1") {
std::cout << "Success";
} else {
std::cout << "Fail";
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我花了很长时间在C++中寻找一个不错的单元测试框架,我当时发现的最好的是googletest - 如果你还没有选择框架的话.
| 归档时间: |
|
| 查看次数: |
3443 次 |
| 最近记录: |