簡體   English   中英

是否有提供當前測試名稱的 Catch2 變量?

[英]Is there a Catch2 variable that provides the name of the current test?

我正在使用Catch2進行單元測試,我想知道 C++ 或環境變量的名稱,它揭示了當前正在執行的測試的名稱。

有沒有辦法做到這一點,或者讓測試調試代碼打印它正在運行的測試的名稱是不好的形式? 理想情況下,我想使用CAPTURE Macro 打印它。

我想這樣做的原因是我有許多 Catch2 測試,其中一些會產生大量輸出。 有些生成完全相同的輸出。 有些生成的輸出應該相同,但有時卻不同。 輸出不是在單元測試的主體中生成,而是在一個調用的函數中生成。 所以我希望能夠根據生成它的宏來標記輸出。

我想這樣做的一種方法是使用將名稱存儲到全局變量或環境變量中的腳手架。

我認為你的腳手架想法是要走的路。 我沒有找到任何無需定義額外變量即可返回名稱的宏。

當涉及到為測試用例實例化的類時:

struct AutoReg : Detail::NonCopyable {
    AutoReg( Detail::unique_ptr<ITestInvoker> invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags ) noexcept;
};

它沒有任何成員可以保存測試信息,即使有,您也必須跟蹤它為每個測試提供的唯一名稱。

看起來AutoReg只是修改了一個名為RegistryHub的類的成員,該類將測試信息保存在向量中。

在我看來,此時您最好自己跟蹤測試名稱。

暫無
暫無

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

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