title: How to implement a custom runner in JUnit5
body: <p>Is there some way to have complete control over execution of test methods (including before/after methods) in JUnit5, similar to JUnit4 @RunWith annotation)?</p>
  
  <p>I'm trying to build a JUnit5 Arquillian extension, but since Aquillian basically needs to execute each test in a container, I'm coming to a problem when running Arquillian from a Junit5 extension.</p>
  
  <p>My code is here: <a href="https://github.com/OndrejM/arquillian-junit5-hacks/blob/master/src/test/java/omihalyi/arquillian/juni5/test/BasicJunit5ArquillianTest.java" rel="noreferrer">BasicJunit5ArquillianTest.java</a></p>
  
  <p>The test should run all methods (including before/after) in a separate container, which can be a separate JVM, remote or embedded server or anything isolated. My extension runs the test method from beforeEach hook, using Arquillian to transfer the test class and run it in a container using <a href="http://junit.org/junit5/docs/current/user-guide/#launcher-api-execution" rel="noreferrer">LauncherFactory.create()</a>, collect test results and transfer them back.</p>
  
  <p>The problem is that the test methods are executed twice - via normal JUnit5 execution and via my Arquillian extension from a beforeEach hook. I'd like to run tests only via Arquillian and skip normal execution of methods.</p>
  
  <p>Is this possible in a JUnit5 extension?
  Or I need to create a custom test engine, possibly extending the Jupiter test engine?</p>