Как вычислить путь к файлам фикстур данных в тестовом коде, учитывая:
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
, но я не мог использовать это.
Некоторый фон: я использую Поймать рамки тестирования, с ваф сборочный инструмент.
Существует ли распространенная практика или модель, возможно, зависящая от структуры тестирования?
Мы обнаружили, что это трудно решить во время компиляции / сборки, поскольку компоненты рефакторинга (и, следовательно, тесты) будут перемещать код. Мы нашли два возможных решения: