有没有办法告诉Cargo在主线程上运行它的测试?

时间:2017-04-17 19:26:47

标签: rust rust-cargo

我一直在尝试用GLFW构建一个基于OpenGL的图像处理库,并且需要它可以测试。不幸的是,我遇到了this错误 - GLFW需要从主线程调用它的初始化函数,但Cargo测试是在后台线程上运行的。

1 个答案:

答案 0 :(得分:17)

不,据我所知,现在不容易实现。您可以将一个--test-threads参数传递给测试工具,但它除了设置主线程外还设置了线程数。所以--test-threads=1导致两个线程仍然存在。

所以你无法真正使用默认的测试工具。幸运的是,你可以在Cargo.toml中禁用它。可能最好的解决方案是创建一个新文件夹(例如gltests)并将所有需要在主线程中运行的测试放在那里。然后我们只需要在Cargo.toml

中声明这些测试
[[test]]
name = "gltests"
path = "gltests/main.rs"
harness = false

这意味着当您说gltests/main.rs时,货物将尝试将main()编译为可执行文件(期望cargo test函数)并执行此可执行文件。通过这种方式,您将无法获得通常从货物测试中获得的任何精美输出。你只需要在main.rs自己做所有事情,但至少你可以在主线程中开始测试。