package org.openntf.domino.junit; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import lotus.domino.NotesException; import lotus.domino.NotesThread; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.openntf.domino.WrapperFactory; import org.openntf.domino.utils.Factory; public class NotesJUnitRunner extends AbstractJUnitRunner { private lotus.domino.Session mastersession; public NotesJUnitRunner(final Class<?> testClass) throws InitializationError { super(testClass); } @Override protected void startUp() { NotesThread.sinitThread(); try { // keep alive one session over all test cases - this will improve execution speed mastersession = lotus.domino.NotesFactory.createSession(); TestEnv.setup(mastersession); } catch (NotesException ne) { ne.printStackTrace(); } } @Override protected void tearDown() { try { if (mastersession != null) mastersession.recycle(); } catch (NotesException e) { e.printStackTrace(); } NotesThread.stermThread(); } @Override protected void beforeTest(final FrameworkMethod method) { try { String runAs = getRunAs(method); if (runAs == null) { TestEnv.session = lotus.domino.local.Session.createSession(); } else { TestEnv.session = lotus.domino.local.Session.createSessionWithTokenEx(runAs); } assertNotNull(TestEnv.session); String db = getDatabase(method); if (db != null) { String server = ""; String dbpath = db; int sep; if ((sep = db.indexOf("!!")) > -1) { server = db.substring(0, sep); dbpath = db.substring(sep + 2); } TestEnv.database = TestEnv.session.getDatabase(server, dbpath); assertNotNull(TestEnv.database); } } catch (NotesException ne) { ne.printStackTrace(); fail(ne.toString()); } } @Override protected void afterTest(final FrameworkMethod method) { // TODO Auto-generated method stub WrapperFactory wf = Factory.getWrapperFactory(); wf.recycle(TestEnv.database); wf.recycle(TestEnv.session); TestEnv.session = null; TestEnv.database = null; } }