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

jas*_*cky 12 rust rust-cargo

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

Luk*_*odt 17

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


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

[[test]]
name = "gltests"
path = "gltests/main.rs"
harness = false
Run Code Online (Sandbox Code Playgroud)

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