柯南包管理器:在单元测试中使用资源文件

时间:2018-04-05 13:21:08

标签: unit-testing resource-files conan

我有一个Conan / CMake项目,它有一些用Catch2编写的单元测试。这是项目层次结构:

├── conanfile.py
├── CMakeLists.txt
├── include
│   └── ...
├── src
│   └── ...
└── test
    └── resources
        ├── resource1.xml
        └── ...
    └── src
        └── unit_test1.cpp
        └── ...

在单元测试中,我想从资源文件中读取,例如:

readFile("test/resources/resource1.xml");

资源文件只能用于单元测试。它们对最终产品应用毫无用处。

另外,我想在conanfile.py的构建步骤中运行单元测试,以便在单元测试失败时构建失败。所以conanfile.py看起来像这样(最后一行运行测试):

class TestConan(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "cmake"
    build_requires = "catch2/2.2.1@bincrafters/stable"
    exports_sources = "CMakeLists.txt", "include*", "src*", "test/src*", "test/resources*"

    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()

        self.run(os.sep.join(["bin", "unitTests"]))

这是有效的,但前提是资源位于test/resources目录中,相对于单元测试二进制文件的执行位置。这在单元测试源中也是硬编码的。还要注意  "test/resources*"中的export_sources需要conanfile.py

我想知道是否有更优雅或标准的方法使资源文件可用于单元测试。

0 个答案:

没有答案