本文档翻译自: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, CMake
import os
class 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。
:::