Open
Description
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
- 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