Integration tests - where and how


We have integration tests, multiple microservices, Circle CI workflow and Kubernetes based production. We have 3 options about where to run the integration tests:

  1. CI local, using the CI vendor run-time - multiple containers that interact with each other using executors. Propietary Circle syntax and run-time

  2. Remote Kubernetes - the CI would have to spinup an external Kubernetes env (at our cloud provider) and run the test over there. Simulates our real production but harder to invoke from the CI

  3. CI local, using docker-compose - known and reputable technology, yet not a copy of our production

Which is your preferred choice?