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?

  • derg@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    18 hours ago

    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 touch Gd<T> it seems to be testable in the normal way without crashing, using #[test]… but I admit it’s not ideal

    Edit: 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