As with any tool or process, there is the right time and the wrong time to use them. Nothing is a silver bullet. You must ask yourself: "Will this help me do my job?" And at the end of our day, our task is to provide the greatest business value for the dollar.
When you are developing new fields, automation is not so useful. Everything develops from scratch, and TDD / BDD methods with “traditional” mocking work are great. Theoretically, dependencies do not change so dramatically, and when they are, it is probably good to know when you are breaking things.
When in maintenance mode (or with an outdated code base), autonomy can be extremely useful. For example, you are tasked with clearing technical debt. This will probably be due to a lot of refactoring, and the ability to isolate your tests from these changes is a huge time margin. Keep in mind that if your code has many dependencies, it probably violates SOLID and SOC, and you (or at least should) have many tests that do not use all the dependencies. Thus, automation in this case is extremely useful. Of course, there are many other examples where this helps.
Like any tool, you must make sure that it does not become a crutch. Using automocking so you can change interfaces, and apis willy-nilly is obviously an anti-pattern. But when used correctly, I found this a huge advantage for our project teams.
It just requires critical thought and application in the right scenarios.
source share