I've been working on a prototype JUnit extension framework  that allows JUnit tests to be injected in a Sling instance, and executed via a test runner servlet.
Tests are not yet OSGi-aware in the first prototype, but they are dynamically injected as exported classes in a bundle that points to them with a Test-Package header. Apart from that they are 100% normal JUnit3 or 4 tests.
Next step is to use annotations to inject services in the tests, I'm thinking of something like
public void someTest()...
which would ignore the test if the repository service is not present.
The prototype consists of two bundles: "extension" which is the test detection and runner services, and "testbundle" which provides a few example tests. To play with it, install the two bundles and access the test servlet at /system/sling/junit/