gpt4 book ai didi

在单元测试期间控制定义的值

转载 作者:行者123 更新时间:2023-11-30 14:37:11 26 4
gpt4 key购买 nike

我想知道是否可以在测试期间使用一组定义的值作为另一个值的预处理器指令来更改包含的 header 。

我在 header 中定义了一组值

//Accelconfig.h
#define sampling_rate 1 // It can be 1, 10 or 25

#ifndef accel_sample_rate
#define accel_sample_rate 25 //default sampling 25Hz
#endif
#if accel_sample_rate == 1
#define sampleRateBits LIS2DH12_BITS_ODR_1HZ
#elif accel_sample_rate == 10
#define sampleRateBits LIS2DH12_BITS_ODR_10HZ
#elif accel_sample_rate == 25
#define sampleRateBits LIS2DH12_BITS_ODR_25HZ
#else
#define sampleRateBits LIS2DH12_BITS_ODR_25HZ //default if invalid parameter
#endif

我用它来进行一些计算,例如基于样本数量和样本持续时间的数据集持续时间。目前设置为 1,但稍后将更改为其他值。

我正在单元测试一个执行此类计算之一的函数(使用 unity/ceedling),并且我需要测试一个要求值大于 1 的极端情况,但我不想更改 header 中的值,我宁愿避免使用 #ifdef TEST 子句,因为它们也不提供更多控制。我想知道是否有一种方法可以更改另一个 accel_config_test.h 的 header ,该 header 可以从测试中动态更改其值。

最佳答案

正如您所写,您不想使用#ifdef TEST并且一般不想更改 header ,而是重定向到一些假 header 。因此,您可以做的是创建另一个 Accelconfig.h header ,可能在测试文件夹的某个子目录中(可能是名为 fakeincludes 等的文件夹),并确保编译器在包含路径中找到的此包含文件比真正的 Accelconfig.h 更早。这需要调整您的build设置以构建测试可执行文件。

要使这些值可以动态修改:在您的假 Accelconfig.h 中,您可以选择将 sampling_rate 和其他宏转换为变量,或将它们 #define 为可以是函数调用或任何您喜欢允许修改值的内容。 (如果您甚至想测试值在运行时发生变化的场景,函数调用可以为您提供这种灵 active 。)

关于在单元测试期间控制定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57522756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com