本文档翻译自:https://docs.conan.io/en/latest/creating_packages/getting_started.html#the-test-package-folder
:::info
Note
test_package与库单元测试或集成测试不同,后者应该更全面。 这些测试是“程序包”测试,它们验证程序包是否已正确创建,并且程序包使用者将能够链接到该程序包并重新使用它。
:::
如果您查看 test_package 文件夹,您将发现 example.cpp 和 CMakeLists.txt 文件没有特别。test_package/conanfile.py 文件只是另一个配方,和之前的 conanfile.txt 没什么区别:
from conans import ConanFile, CMakeimport osclass HelloTestConan(ConanFile):settings = "os", "compiler", "build_type", "arch"generators = "cmake"def build(self):cmake = CMake(self)cmake.configure()cmake.build()def imports(self):self.copy("*.dll", dst="bin", src="bin")self.copy("*.dylib*", dst="bin", src="lib")def test(self):os.chdir("bin")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。
:::
