car*_*dbt 9 c++ testing io unit-testing
这些天,我学习单元测试.几乎单元测试使用返回值或参考值作为测试用例中的预期值.如果它在函数中没有返回值和参考值.预期值是多少?
exsample-
void unit_test()
{
cout << "Hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)
当然,unit_test功能很简单.所以,这个功能似乎不需要单元测试.但是,这只是样本.你认为unit_test功能有副作用吗?
谢谢大家,请理解我的傻瓜英语.
Ton*_*roy 16
如果您正在编写一个您应该测试的函数,那么您应该将其设计为在框架中可测试.在这里,如果您的测试是在可以验证进程输出的进程级别完成的,那么写入std :: cout就可以了.否则,您可能希望将输出流作为函数的参数,如下所示:
void unit_test(std::ostream& os = std::cout)
{
os << "Hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以测试它:
std::ostringstream oss;
unit_test(oss);
assert(oss && oss.str() == "Hello");
Run Code Online (Sandbox Code Playgroud)
如图所示,制作经过良好测试的软件需要一些给予和考虑......测试要求反馈到设计中.
编辑:如果您必须测试预先存在的功能而不更改它们,请考虑:
#include <sstream>
#include <iostream>
void f()
{
std::cout << "hello world\n";
}
int main()
{
std::ostringstream oss;
std::streambuf* p_cout_streambuf = std::cout.rdbuf();
std::cout.rdbuf(oss.rdbuf());
f();
std::cout.rdbuf(p_cout_streambuf); // restore
// test your oss content...
assert(oss && oss.str() == "hello world\n";
std::cout << oss.str();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9352 次 |
| 最近记录: |