I’m using godot-rust bindings to provide some additional functionality to my codebase. I wrote methods associated with a struct that I would like to use in my game and made a few unit tests to ensure that they’re working correctly. After godotifying my struct with attributes described in Hello World section of the godot-rust book I got a slew of errors, some of which are about initialization of the struct in test functions. After clearing them all and executing MyClass:new_alloc()
at the beginning of a test function the compiler complains that Godot engine is not available. I hit a roadblock because I don’t know how to execute tests in Godot environment. Changing [test]
to #[itest]
makes the code compile but that’s because it executes 0 tests; from what I see itest
is meant for developing godot-rust anyway. What is the preferred way of unit testing godot-rust code?
I’ve only spent a little bit of time on godot-rust myself, but from what I hear you have to use some sort of third-party library to help out. I’ve heard gd-rehearse might be what you’re looking for, but never got it working myself (though I didn’t try very hard).
I’ve resorted to mostly using gdscript, and in rust just making my structures normal rust structs which I can unit test, just adding thin wrappers which use
Gd<T>
which call into my standard tested rust code. As long as what you’re testing doesn’t touchGd<T>
it seems to be testable in the normal way without crashing, using[test]
… but I admit it’s not idealEdit: there’s a godot-rust discord linked from their main docs page which is much more active than this place could be, you might get a better answer there