-
Notifications
You must be signed in to change notification settings - Fork 713
/
JUnitHelper.java
120 lines (95 loc) · 4.53 KB
/
JUnitHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package fitnesse.junit;
import fitnesse.ContextConfigurator;
import fitnesse.FitNesseContext;
import fitnesse.testrunner.MultipleTestsRunner;
import fitnesse.testrunner.PagesByTestSystem;
import fitnesse.testrunner.SuiteContentsFinder;
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.io.File;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.List;
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 = FitNesseRunner.initContext(new File(ContextConfigurator.DEFAULT_CONFIG_FILE), fitNesseRootPath, ContextConfigurator.DEFAULT_ROOT, port);
JavaFormatter testFormatter = new JavaFormatter(pageName);
testFormatter.setResultsRepository(new JavaFormatter.FolderResultsRepository(outputDir));
MultipleTestsRunner testRunner = createTestRunner(initChildren(pageName, suiteFilter, excludeSuiteFilter, context), context);
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<WikiPage> initChildren(String suiteName, String suiteFilter, String excludeSuiteFilter, FitNesseContext context) {
WikiPage suiteRoot = getSuiteRootPage(suiteName, context);
if (!suiteRoot.getData().hasAttribute("Suite")) {
return Arrays.asList(suiteRoot);
}
return new SuiteContentsFinder(suiteRoot, new fitnesse.testrunner.SuiteFilter(suiteFilter, excludeSuiteFilter), context.getRootPage()).getAllPagesToRunForThisSuite();
}
private WikiPage getSuiteRootPage(String suiteName, FitNesseContext context) {
WikiPagePath path = PathParser.parse(suiteName);
PageCrawler crawler = context.getRootPage().getPageCrawler();
return crawler.getPage(path);
}
private MultipleTestsRunner createTestRunner(List<WikiPage> pages, FitNesseContext context) {
final PagesByTestSystem pagesByTestSystem = new PagesByTestSystem(pages, context.getRootPage());
MultipleTestsRunner runner = new MultipleTestsRunner(pagesByTestSystem, context.testSystemFactory);
runner.setRunInProcess(debugMode);
return runner;
}
private String msgAtLeastOneTest(String pageName, TestSummary summary) {
return
MessageFormat.format("at least one test executed in {0}\n{1}",
pageName, summary.toString());
}
}