jsedding commented on a change in pull request #50:
URL: https://github.com/apache/sling-site/pull/50#discussion_r506305711



##########
File path: 
src/main/jbake/content/documentation/bundles/org-apache-sling-junit-bundles.md
##########
@@ -27,6 +27,42 @@ the test class names, like for example:
 
     Sling-Test-Regexp=com.example.*ServerSideTest
 
+### JUnit 4 Support
+All that is required is the installation of the the Apache Sling JUnit Core 
bundle. The bundle exports the packages `junit.*`, `org.junit.*` and 
additionally `org.hamcrest.*`. Note however that the `org.junit.platform.*` 
packages, which contain the generic testing platform developed for JUnit 5, are 
NOT exported.  
+
+### JUnit 5 Support (since version 2.0.0)
+JUnit 5 support requires installation of a number of bundles provided by the 
JUnit team. The Apache Sling JUnit Core bundle has optional imports for some of 
the packages exported by these bundles and will automatically switch to JUnit 5 
support if these are available (a bundle restart is required).
+
+To satisfy the imports of the Apache Sling JUnit Core bundle, four additional 
bundles need to be installed:  
+
+- org.opentest4j:opentest4j
+- org.junit.platform:junit-platform-commons 
+- org.junit.platform:junit-platform-engine 
+- org.junit.platform:junit-platform-launcher
+    
+<div class="note">
+Note: `junit-platform-commons` version 1.7.0 cannot be deployed using Sling's 
OSGi Installer, due to [junit5 issue 
#2438](https://github.com/junit-team/junit5/issues/2438). Other JUnit5 bundles 
_may_ be affected by the same issue.
+</div> 
+
+However, this is not yet very useful. In order to run tests, at least one 
implementation of `org.junit.platform.engine.TestEngine` needs to be available. 
`TestEngine` implementations are advertised using Java's `ServiceLoader` 
mechanism. Apache Sling Junit Core takes care of detecting test engines in 
other installed bundles and automatically makes them available for test 
execution.

Review comment:
       These are the JUnit Platform bundles. They "serve as a foundation for 
launching testing frameworks on the JVM". An arbitrary number of `TestEngine`s 
can be included on the class-path (or in this case deployed to the OSGi 
container). The JUnit project currently offers the JUnit Jupiter Engine and the 
JUnit Vintage Engine (to support JUnit 3+4 on top of the JUnit Platform. 
Deploying both allows JUnit4 and JUnit5 tests to live side-by-side, the correct 
engine is selected for each test automatically.
   
   So deploying only the JUnit Platform part is not very useful without an 
engine.
   
   Maybe a link to 
https://junit.org/junit5/docs/current/user-guide/#overview-what-is-junit-5 
would be helpful, it explains the architecture a bit.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to