/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.reteoo.test; import java.util.ArrayList; import java.util.List; import org.drools.RuntimeDroolsException; import org.drools.reteoo.test.dsl.NodeTestCase; import org.drools.reteoo.test.dsl.NodeTestDef; import org.junit.runner.Description; import org.junit.runner.Runner; import org.junit.runner.notification.RunNotifier; /** * A class that runs node tests as JUnit tests * * @author etirelli */ public class JUnitNodeTestRunner extends Runner { // The description of the test suite private Description descr; private List<NodeTestCase> testCases = new ArrayList<NodeTestCase>(); public JUnitNodeTestRunner(Class<?> clazz) { try { NodeTestCasesSource ntsuite = (NodeTestCasesSource) clazz .newInstance(); testCases = ntsuite.getTestCases(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeDroolsException( "Error instantiating node test runner: " + e, e); } this.descr = Description.createSuiteDescription("Node test case suite"); for (NodeTestCase tcase : testCases) { Description tcaseDescr = Description.createSuiteDescription(tcase .getFileName() != null ? tcase.getFileName() : tcase.getName()); tcase.setDescription(tcaseDescr); this.descr.addChild(tcaseDescr); for (NodeTestDef ntest : tcase.getTests()) { Description ntestDescr = Description.createTestDescription( clazz, ntest.getName()); tcaseDescr.addChild(ntestDescr); ntest.setDescription(ntestDescr); } } } /* * (non-Javadoc) * * @see org.junit.runner.Runner#getDescription() */ @Override public Description getDescription() { return descr; } /* * (non-Javadoc) * * @see * org.junit.runner.Runner#run(org.junit.runner.notification.RunNotifier) */ @Override public void run(RunNotifier notifier) { ReteDslTestEngine tester = new ReteDslTestEngine(); for (NodeTestCase tcase : testCases) { tester.run(tcase, notifier); } } }