Sling
  1. Sling
  2. SLING-1963

Support for server-side JUnit tests, injected in a running Sling instance

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None

      Description

      I've been working on a prototype JUnit extension framework [1] 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

      @TestReference
      SlingRepository repository

      And maybe

      @Test
      @OptionalTest(requiredService=repository)
      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/

      [1] http://svn.apache.org/repos/asf/sling/whiteboard/bdelacretaz/junit

        Issue Links

          Activity

          Bertrand Delacretaz created issue -
          Bertrand Delacretaz made changes -
          Field Original Value New Value
          Link This issue blocks SLING-1981 [ SLING-1981 ]
          Bertrand Delacretaz made changes -
          Link This issue relates to SLING-1981 [ SLING-1981 ]
          Bertrand Delacretaz made changes -
          Labels integration-tests junit testing
          Bertrand Delacretaz made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Gavin made changes -
          Workflow no-reopen-closed,doc-test-required [ 12544134 ] Copy of no-reopen-closed,doc-test-required [ 12764709 ]
          Gavin made changes -
          Workflow Copy of no-reopen-closed,doc-test-required [ 12764709 ] no-reopen-closed,doc-test-required [ 12766270 ]
          Gavin made changes -
          Workflow no-reopen-closed,doc-test-required [ 12766270 ] re-open possible,doc-test-required [ 12788341 ]
          Gavin made changes -
          Workflow re-open possible,doc-test-required [ 12788341 ] no-reopen-closed,doc-test-required [ 12791085 ]

            People

            • Assignee:
              Bertrand Delacretaz
              Reporter:
              Bertrand Delacretaz
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development