gpt4 book ai didi

c++ - 如何组织夹具数据并从 C/C++ 中的测试访问它们

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:09 25 4
gpt4 key购买 nike

如何在测试代码中计算数据夹具文件的路径,给定:

  • test/{main.cpp,one_test.cpp,two_test.cpp}
  • build/ 中完成编译
  • test/fixtures/{conf_1.cfg}

我遇到的问题如下:

/* in test/one_test.cpp */
TEST_CASE( "Config from file", "[config]" ) {
Config conf;
REQUIRE( conf.read(??? + "/conf_1.cfg") )
}

目前我找到的解决方案是在配置时定义一个宏:

#define TEST_DIR "/absolute/path/to/test"

这是在我的 wscript 中获得的

def configure(cnf):
# ...
cnf.env.TEST_DIR = cnf.path.get_src().abspath()
cnf.define('TEST_DIR', cnf.env.TEST_DIR)
cnf.write_config_header('include/config.h')

其他尝试包括 __FILE__ 扩展为 ../test/one_test.cpp,但我无法使用它。

一些背景:我正在使用 Catch testing framework , 与 waf build tool .

是否存在可能依赖于测试框架的通用实践或模式?

最佳答案

我们发现这很难在编译/构建时解决,因为重构组件(以及测试)会四处移动代码。我们找到了两种可能的解决方案:

  1. 将数据放入测试中。这只有在它简短且易于阅读时才实用 - 字符串或简单的十六进制转储。如果这样可以使测试更易于维护,您始终可以将数据放入头文件中。
  2. 运行测试时在命令行指定数据文件的位置。为此,您可能需要自己的 main(参见 'Supplying your own main()'

关于c++ - 如何组织夹具数据并从 C/C++ 中的测试访问它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803471/

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