AlexAndThunder
However I ran into issues when trying to use established C# Unit Testing Frameworks like x or n Unit. I don't understand the absolute specifics but the gist is that these established systems don't work well (if at all sometimes) with Godot's Managed API.
So being the dev that works far too much on their own tools instead of their game, I ended up adding a C# Wrapper around WAT (My GDScript Unit Testing Plugin).
Installing WAT-Sharp
Add "addons/WAT" from the Github to your addons folder
Include the following files in your csproj file
addons\WAT\core\assertions\Assertions.cs
addons\WAT\core\test\Recorder.cs
addons\WAT\core\test\Test.cs
C# API Differences You still inherit from WAT.Test
Use the [Test] Attribute instead of prefixing your method names with test
Use public override String Title() instead of func title()
Use public override Start() instead of func start()
Use public override Pre() instead of func pre()
Use public override Post() instead of func post()
Use public override End() instead of func end()
Use Describe() instead of describe()
Assertions are PascalCase (Check addons/WAT/core/assertions/Assertions.cs if you're stuck)
Use await ToSignal(until_timeout/signal) to use Yield Methods
Use the [RunWith(args)] Attribute for parameterized tests (and pass them via the call)
PoolArray Assertions were removed
TestSuiteOfSuites doesn't exist (yet)
Test Doubles don't exist in C# (I'm not as familler with C# enough to do this properly)
ExamplesYou can find examples of tests in WAT-Sharp's own test suite at https://github.com/CodeDarigan/WATSharp/tree/master/tests which should hopefully help clear up any confusion.
' Memory management
If a class inherits from Reference, then instances will be freed when no longer in use. No garbage collector exists, just simple reference counting. By default, all classes that don’t define inheritance extend Reference. If this is not desired, then a class must inherit Object manually and must call instance.free(). To avoid reference cycles that can’t be freed, a weakref function is provided for creating weak references. '