Articles such as this point out some of the pitfalls of manually instantiating dependencies in UTs, while showing some of the benefits of doing it, instead, with the .NET's dependency container by use of IServiceCollection and IServiceProvider.
While I do understand the pitfalls and the benefits, what about using a base test class where all the mocks are declared and instantiated (manually) - versus registering dependencies with .NET's commonplace approach?
With an abstract base test class, I have the benefit of having the mocks already declared - and ready to use - throughout all my different UT classes - as opposed to the need of having to resolve the dependencies at each UT class using serviceProdiver.GetService (+) the dependencies are still declared and resolved in a single place. Should they need to be changed, it is as simple as doing it with the centralized dependencies registered with IServiceCollection.
Does that make sense ?