捕获:我可以使用什么符号来个性化单元测试的代码 我使用C++测试框架。我有一个单独的测试代码文件 #define CATCH_CONFIG_MAIN #include "catch.hpp" #include "my_own_headers.h" TEST_CASE( "test of thisnthat", "[thisnthat]" ) { SomeStuff a(42); ...

捕获:我可以使用什么符号来个性化单元测试的代码 我使用C++测试框架。我有一个单独的测试代码文件 #define CATCH_CONFIG_MAIN #include "catch.hpp" #include "my_own_headers.h" TEST_CASE( "test of thisnthat", "[thisnthat]" ) { SomeStuff a(42); ...,c++,unit-testing,catch-unit-test,C++,Unit Testing,Catch Unit Test,是否有Catch在构建时定义的一些符号,我可以使用它来更改代码定义 例如: 假设我有一个结构,它需要有一些特殊的构造函数,但只是为了测试目的,为了一些特定的测试用例。我希望在构建测试代码时能够使用此构造函数,但常规构建不应启用此函数 // someheader.h struct SomeStuff { int someValue; #if BUILD_IS_TEST_MODE SomeStuff( int a ), someValue(a) {} #endif }; 我可以使用

是否有Catch在构建时定义的一些符号,我可以使用它来更改代码定义

例如: 假设我有一个结构,它需要有一些特殊的构造函数,但只是为了测试目的,为了一些特定的测试用例。我希望在构建测试代码时能够使用此构造函数,但常规构建不应启用此函数

// someheader.h
struct SomeStuff
{
   int someValue;
 #if BUILD_IS_TEST_MODE
   SomeStuff( int a ), someValue(a) {}
 #endif
};
我可以使用什么符号


我查看了一下,但找不到任何相关信息。

我不知道有任何专门用于此目的的特殊符号,但是使用
TWOBLUECUBES\u CATCH\u HPP\u(包括)
header guard保护“CATCH.HPP”应该可以。如果您想保持常规代码“干净”,您还可以简单地将
SomeStuff
扩展到测试代码中的自定义类型。这可能不是在所有情况下都可行,但它工作得很好,可以正确地将测试和常规代码分开(在我看来)。谢谢,@Holt,但我不确定是否理解:如何在两个不同的文件中管理相同类型的两个声明?我不清楚。@kebs如果您没有声明相同的类型,您将声明一个用于测试的新类型,例如
testsomething
(例如,请参阅)。这不会在任何地方都有效,但这只是一个开始,而且通常已经足够了。哦,我明白了,继承。是的,这是一个解决方案,如果可能的话,我宁愿避免创建新类型。但是谢谢你的建议。