fitnesse的wiki页面,只能从上往下依次执行,无法按照条件选择性执行。因为,需要通过修改源java代码的方式实现。当if返回的结果是true,则执行下一行语句直到endif的区域;当if返回的结果是false,则不会执行下一行语句直到endif的区域。修改的文件以及代码如下。
HtmlSlimTestSystem.java
// begin
import org.htmlparser.Node;
// end
获取table指定row的关键字,例如script、ensure等
// begin
private String getKeyWordFromTableRow(Node tr){
NodeList tds = tr.getChildren();
String str = "";
for(int k = 0; k < tds.size(); k++){
Node td = tds.elementAt(k);
if(td instanceof TableColumn){
if(td.getChildren()!=null){
str = ((TableColumn) td).getChild(0).toString().split(":")[1].trim();
}
break;
}
}
return str;
}
//end
根据if条件返回的true或者false,来限定endif表是否要执行,如果返回为true则执行,返回为false则不执行。
@Override
protected void processAllTablesOnPage(TestPage pageToTest) throws TestExecutionException {
List<SlimTable> allTables = createSlimTables(pageToTest);
boolean isSuiteTearDownPage = PageData.SUITE_TEARDOWN_NAME.equals(pageToTest.getName());
if (allTables.isEmpty()) {
String html = createHtmlResults(START_OF_TEST, END_OF_TEST);
testOutputChunk(html);
} else {
// begin
boolean executeNext = true; //下个table是否需要执行
// end
for (int index = 0; index < allTables.size(); index++) {
SlimTable theTable