The project goes larger and larger with each passing day - it is a must-have feature - unit testing,
We need at least a basic code coverage on simple test cases for all of the core systems :
[ ] CI - basic build to ensure the build is actually possible
[ ] Quest (test if the quest can be completed from start to finish)
[ ] Audio (test if the audio queue is being played when a player is near it )
[ ] Input (test if the Inputs are not being changed and that each system received the corresponding input )
[ ] Scene (test if that the scene can be transitioned into another scene and back )
[ ] Interaction (test if that the interactable objects are interactable )
[ ] State machine (basic test with a simple state machine to ensure sanity for the State machine )
[ ] Localization (basic test with simple swap on the base language - check all text is converted (also check TextMesh Pro) )
[ ] stress tests on separate systems - without them you will not know when the given system will fail, thus resulting in impossible to reproduce bugs
[ ] Persistant data tests
[x] document the workflow - this will ensure that anyone on the project can start off by themselves and make sure there will be no inherited bugs.
[ ] finally integration tests with other systems. Use NSubstite and interfaces to easily test stuff
Also while we are on the note of the testing - it is much easier to test when you have POCO objects instead of the unity Monobehaviours.
You can simply initialize them in OnEnable to smoothly transition from Monobehaviours to POCOs.
Make sure you have some kind of documentation in place - git wiki is a perfect place for it, just make sure to mention it somewhere on the Readme.md
The project goes larger and larger with each passing day - it is a must-have feature - unit testing, We need at least a basic code coverage on simple test cases for all of the core systems :
Also while we are on the note of the testing - it is much easier to test when you have POCO objects instead of the unity Monobehaviours.