本文档翻译自:https://docs.conan.io/en/latest/creating_packages/getting_started.html#the-test-package-folder :::info Note
    test_package与库单元测试或集成测试不同,后者应该更全面。 这些测试是“程序包”测试,它们验证程序包是否已正确创建,并且程序包使用者将能够链接到该程序包并重新使用它。 :::

    如果您查看 test_package 文件夹,您将发现 example.cppCMakeLists.txt 文件没有特别。test_package/conanfile.py 文件只是另一个配方,和之前的 conanfile.txt 没什么区别:

    1. from conans import ConanFile, CMake
    2. import os
    3. class HelloTestConan(ConanFile):
    4. settings = "os", "compiler", "build_type", "arch"
    5. generators = "cmake"
    6. def build(self):
    7. cmake = CMake(self)
    8. cmake.configure()
    9. cmake.build()
    10. def imports(self):
    11. self.copy("*.dll", dst="bin", src="bin")
    12. self.copy("*.dylib*", dst="bin", src="lib")
    13. def test(self):
    14. os.chdir("bin")
    15. self.run(".%sexample" % os.sep)

    上述conanfile.py具有以下特征:

    • 它没有名称和版本,因为我们没有创建包,所以没有必要。
    • 不需要 package()package_info() 方法,因为我们没有创建包。
    • Test() 方法指定需要运行哪些二进制文件。
    • imports() 方法设置为将动态链接库复制到bin文件夹。当应用动态链接时,test() 方法启动 example 可执行文件, example 也将运行。

    :::info Note
    关于标准包配方的一个重要区别是,您不必声明一个 requires 属性来依赖于测试的 hello/0.1@demo/test 包,因为 requires 将自动注入 Conan。然而,如果你选择显式的声明它,它将会工作。但是如果你决定改变它们,你得考虑碰撞冲突,可能修改更改 user 和 channel。 :::