Q: How to run exactly the same phpunit tests against different implementations of SUT? I can't wrap my head around this testing issue. 
I wrote a test for testing repository which uses In-memory implementation like:
class RepositoryTest extends TestCase {

    function setUp() {
        // set implementation in the container
        container()->set(Repository::class, InMemoryRepository::class);
    }

    function test_it_can_save() {...}
    function test_it_can_delete() {...}
    function test_it_can_query() {...}
}

Then I added another implementation for this repository. Let's say it is SQLRepository.
I need to run exactly the same set of tests against my new implementation. 
I'd like to just set another context for the same tests.
How do I do that?

A: Ok, I think I know what to do.
I just need to extend my initial test and reload setUp method like this:
class SQLRepositoryTest extends RepositoryTest {
    function setUp() {
        // set another implementation in the container
        container()->set(Repository::class, SQLRepository::class);
    }
}

