Hi,
Just in case somebody needs it I wrote Junit-jupiter extensions for
ApplicationComposer and SingleApplicationComposer. They are very simple
since all the work is already done, but they may save somebody's 10 minutes.
public class ApplicationComposerExtension implements BeforeEachCallback,
AfterEachCallback {
private ApplicationComposers delegate;
@Override
public void beforeEach(ExtensionContext context) throws Exception {
delegate = new
ApplicationComposers(context.getRequiredTestInstance());
delegate.before(context.getRequiredTestInstance());
}
@Override
public void afterEach(ExtensionContext context) throws Exception {
delegate.after();
}
}
public class SingleApplicationComposerExtension implements
BeforeEachCallback {
private static volatile boolean started = false;
private static final AtomicReference APP = new AtomicReference<>();
private static final AtomicReference<Thread> HOOK = new
AtomicReference<>();
@Override
public void beforeEach(ExtensionContext context) throws Exception {
start(context.getRequiredTestInstance().getClass());
composerInject(context.getRequiredTestInstance());
}
public static void setApp(final Object o) {
APP.set(o);
}
public static void close() {
//Same as in SingleApplicationComposerRunner
...
}
private static void start(final Class<?> marker) throws Exception {
//Same as in SingleApplicationComposerRunner
...
}
private static void composerInject(final Object target) throws
IllegalAccessException {
//Same as in SingleApplicationComposerRunner
...
}
}
Of course, I may not have taken into account all possibilities (it does work
in my project, that's all), so feel free to criticize or implement it some
other way.
If you want I can try to make a pull request with this (reusing code from
SingleApplicationComposerRunner) and some tests.
Best regards,
Vicente.
--
Sent from: http://tomee-openejb.979440.n4.nabble.com/TomEE-Users-f979441.html