簡體   English   中英

如何讓 catch2 打印比較的 C 樣式字符串的內容?

[英]How to get catch2 to print the compared C-style string's contents?

我正在使用 catch2(最新版本 - 2.13.6 截至目前),在我的測試用例中,我有一堆類似於以下的檢查:

CHECK(!strcmp(my_str, "some literal string here"));

每個測試用例的文字都不同,顯然my_str的內容也是如此。

當這樣的檢查失敗時,我得到的輸出如下:

/path/to/test_source_file.cpp:123: FAILED:
  CHECK( !strcmp(my_str, "some literal string here") )
with expansion:
  false

但我沒有打印出my_str的攪拌。 讓上述內容也打印(部分) my_str的內容的最佳方法是什么?

筆記:

  • 您可能不會假設my_str是以空值結尾的。
  • 代碼必須相對簡潔。
  • 我寧願不將任何內容轉換為std::string ,但如果您必須這樣做,我不排除它。

我自己的hacky解決方案如下:

#define PRINTING_CHECK(expected_, actual_)    \
do {                                          \
INFO( "actual_ = " << '"' << actual_ << '"'); \
  CHECK(!strcmp(actual_, expected_));         \
} while (false)                               \

但我希望可能有更優雅的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM