簡體   English   中英

在一個編譯單元中運行所有 catch2 測試,無需標簽定義

[英]Run all catch2 tests in one compile unit without tag definition

我有以下項目結構:

test_main.cc

#define CATCH_CONFIG_MAIN

#include "catch2.hpp"

測試1.cc

#include "catch2.hpp"

TEST_CASE("test1", "[test1]") {
  REQUIRE(1 == 1);
}

測試2.cc

#include "catch2.hpp"

TEST_CASE("test2", "[test2]") {
  REQUIRE(2 == 2);
}

現在,我可以在測試可執行文件的運行時使用命令行選項test1運行所有測試,例如test1

我通常用相同的標簽在一個文件中標記所有測試,因為我使用一個文件來組合同一主題的所有測試。 因此,使用文件和標簽違反了DRY原則。

我的問題是有沒有辦法運行在一個文件中定義的所有 catch2 測試?

我在文檔中發現了這個:

Catch2/command-line.md at devel · catchorg/Catch2 · GitHub

文件名作為標簽

-#, --filenames-as-tags

當使用此選項時,每個測試都會被賦予一個附加標簽,該標簽由在其中找到的非限定文件名組成,任何擴展名都被剝離,並以#字符為前綴。

因此,例如,文件~\Dev\MyProject\Ferrets.cpp中的測試將被標記為[#Ferrets]

看起來它有效,所以現在只需根據該標簽過濾測試。

文檔中甚至有確切的例子

...

 -# [#somefile] Matches all tests from the file 'somefile.cpp'

暫無
暫無

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

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