Tôi đang làm việc để nhận một số mã cũ dưới các kiểm tra đơn vị và đôi khi cách duy nhất để cảm nhận hành vi của chương trình hiện có là từ đầu ra của bàn điều khiển.Chuyển hướng cả cout và stdout thành chuỗi trong C++ để kiểm tra đơn vị
Tôi thấy rất nhiều ví dụ trực tuyến về cách chuyển hướng stdout sang tệp khác trong C++, nhưng có cách nào tôi có thể chuyển hướng nó tới luồng trong bộ nhớ để kiểm tra của tôi không phải dựa vào đĩa không?
Tôi muốn nhận bất kỳ thứ gì mà mã kế thừa gửi tới stdout thành chuỗi std :: vì vậy tôi có thể dễ dàng .find trên đầu ra.
Sửa
Mã di sản là xấu như vậy mà nó sử dụng một hỗn hợp của cout << ..
và printf
. Dưới đây là những gì tôi có cho đến nay:
void TestSuite::setUp(void)
{
oldStdoutBuf = std::cout.rdbuf();
std::cout.rdbuf(consoleOutput.rdbuf());
}
void TestSuite::tearDown(void)
{
std::cout.rdbuf(oldStdoutBuf);
}
Vấn đề là điều này không không đầu ra chụp sử dụng printf. Tôi muốn thứ gì đó có cả hai. Bất kỳ ý tưởng?
Không có câu trả lời nào dưới đây có hiệu quả đối với tôi, bạn có ví dụ làm việc cho điều này không? – rraallvv