Я пытаюсь создать библиотеку обработки изображений на основе OpenGL с GLFW, и ее нужно тестировать. К сожалению, я столкнулся с этой ошибкой - GLFW нуждается в своих функциях инициализации, которые будут вызываться из основного потока, но тесты Cargo выполняются в фоновом потоке.
Есть ли способ сообщить Cargo о проведении тестов на основной теме?
Ответ 1
Нет, насколько мне известно, сейчас это нелегко. Существует аргумент --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
, но по крайней мере вы можете начать тесты в основном потоке.