In most cases, it is impossible to run Unit-Tests. Usually a unit-test would test the functionalitiy of a component in "lab-conditions" by mocking away secondary dependencies and testing the component on it's own. Due to our current usage of using singletons everywhere, it is currently generally impossible to do so. We therefore generally rely on Integration-Tests, which have the big disadvantage of being much more heavy weight. So, in order to test the same functionality, a lot more cpu, IO and memory resources are needed. The downside of Integration-Tests are, that while it is very easy to test the "happy path" (expected usage pattern), testing the "unhappy path" is very difficult and is mostly simply skipped. This results in code where we ensured correct functionality under correct and ideal conditions, however most of the code is left untested under non-idal conditions.