Let's say we have a simple application that uses a popular approach as Controller -> Service -> Repository
pattern under a framework.
We would like to write integration tests and start from Controller. Any integration tests against a controller component will eventually run service component instances and my question is, does not it mean we also tested the service layer's functionality in this case? Even more, we have also tested the repository since in integration tests we generally don't mock internal integrations.
aController
Service service;
aControllerMethod():
service.doBusiness(); //this will be called in controller integration test
--
aControllerIntegrationTest
aControllerTestMethod():
testController();
In my opinion, the above case is true that it will test also the service layer. But except acceptance tests, we should write isolated tests and every layer should be also tested independently.