All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
fitnesse.junit.JUnitHelper Maven / Gradle / Ivy
package fitnesse.junit;
import fitnesse.ContextConfigurator;
import fitnesse.FitNesseContext;
import fitnesse.testrunner.MultipleTestsRunner;
import fitnesse.testrunner.SuiteContentsFinder;
import fitnesse.testrunner.run.TestRun;
import fitnesse.testsystems.ConsoleExecutionLogListener;
import fitnesse.testsystems.TestSummary;
import fitnesse.testsystems.TestSystemListener;
import fitnesse.wiki.PageCrawler;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPagePath;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class JUnitHelper {
public static final String PAGE_TYPE_SUITE="suite";
public static final String PAGE_TYPE_TEST="test";
private final String outputDir;
private final String fitNesseRootPath;
private final TestSystemListener resultsListener;
private int port = 0;
private boolean debugMode = true;
public JUnitHelper(String fitNesseRootPath, String outputPath) {
this(fitNesseRootPath, outputPath, new PrintTestListener());
}
public JUnitHelper(String fitNesseDir, String outputDir,
TestSystemListener resultsListener) {
this.fitNesseRootPath = fitNesseDir;
this.outputDir = outputDir;
this.resultsListener = resultsListener;
}
public void setPort(int port) {
this.port = port;
}
public void setDebugMode(boolean enabled) {
debugMode = enabled;
}
public void assertTestPasses(String testName) throws Exception {
assertPasses(testName, PAGE_TYPE_TEST, null);
}
public void assertSuitePasses(String suiteName) throws Exception {
assertPasses(suiteName, PAGE_TYPE_SUITE, null);
}
public void assertSuitePasses(String suiteName, String suiteFilter) throws Exception {
assertPasses(suiteName, PAGE_TYPE_SUITE, suiteFilter);
}
public void assertSuitePasses(String suiteName, String suiteFilter, String excludeSuiteFilter) throws Exception {
assertPasses(suiteName, PAGE_TYPE_SUITE, suiteFilter, excludeSuiteFilter);
}
public void assertPasses(String pageName, String pageType, String suiteFilter) throws Exception {
assertPasses(pageName, pageType, suiteFilter, null);
}
public void assertPasses(String pageName, String pageType, String suiteFilter, String excludeSuiteFilter) throws Exception {
FitNesseContext context = ContextConfigurator
.systemDefaults()
.withRootPath(fitNesseRootPath)
.withPort(port)
.makeFitNesseContext();
JavaFormatter testFormatter = new JavaFormatter(pageName);
testFormatter.setResultsRepository(new JavaFormatter.FolderResultsRepository(outputDir));
List pages = initChildren(pageName, suiteFilter, excludeSuiteFilter, context);
TestRun run = createTestRun(context, pages);
MultipleTestsRunner testRunner = createTestRunner(run, context, debugMode);
testRunner.addTestSystemListener(testFormatter);
testRunner.addTestSystemListener(resultsListener);
testRunner.addExecutionLogListener(new ConsoleExecutionLogListener());
testRunner.executeTestPages();
TestSummary summary = testFormatter.getTotalSummary();
assertEquals("wrong", 0, summary.getWrong());
assertEquals("exceptions", 0, summary.getExceptions());
assertTrue(msgAtLeastOneTest(pageName, summary), summary.getRight() > 0);
}
private List initChildren(String suiteName, String suiteFilter, String excludeSuiteFilter, FitNesseContext context) {
WikiPage suiteRoot = getSuiteRootPage(suiteName, context, Collections.emptyMap());
if (!suiteRoot.getData().hasAttribute("Suite")) {
return Arrays.asList(suiteRoot);
}
return new SuiteContentsFinder(suiteRoot, new fitnesse.testrunner.SuiteFilter(suiteFilter, excludeSuiteFilter), context.getRootPage()).getAllPagesToRunForThisSuite();
}
static WikiPage getSuiteRootPage(String suiteName, FitNesseContext context, Map customProperties) {
WikiPagePath path = PathParser.parse(suiteName);
PageCrawler crawler = context.getRootPage(customProperties).getPageCrawler();
return crawler.getPage(path);
}
static MultipleTestsRunner createTestRunner(TestRun run, FitNesseContext context, boolean debugMode) {
MultipleTestsRunner runner = new MultipleTestsRunner(run, context.testSystemFactory);
runner.setRunInProcess(debugMode);
return runner;
}
static TestRun createTestRun(FitNesseContext context, List pages) {
return context.testRunFactoryRegistry.createRun(pages);
}
static String msgAtLeastOneTest(String pageName, TestSummary summary) {
return MessageFormat.format("at least one test executed in {0}\n{1}",
pageName, summary.toString());
}
}