fitnesse 源码研究和二次开发

来源:互联网 发布:百度人工智能研究 编辑:程序博客网 时间:2024/05/16 01:30

1. 前端框架 velocity

2. 类型转换,比如Map转String,List转String,相关代码在fitnesse.slim.converters包下,ConverterRegistry负责注册各种类型的Converter组件,因此可以自定义类型转换并加入ConverterRegistry进行注册

3. 增加fitnesse slim架构的页面方法(check, show ,note,check not),以fitnesse.testsystems.slim.tables.ScriptTable为入口进行扩展

4. fitnesse没有用到诸如tomcat之类的web服务器,而是基于ServerSocket的socket服务,来模拟http服务

服务的代码在fitnesse.socketservice包中,其中fitnesse.socketservice.SocketService提供核心服务

5. 修改生成文件的编码

修改fitnesse.testsystems.ClientBuilder类中的DEFAULT_COMMAND_PATTERN 变量值,加入"-Dfile.encoding=utf-8"

  static final String[] DEFAULT_COMMAND_PATTERN = {    javaExecutable(),    "-Dfile.encoding=utf-8", //全局文件编码    "-cp",    "%p",    "%m" };

6. slim上下文(fitnesse.slim.SlimExecutionContext)(使用slim框架时,用来存储fitnesse变量和实例的上下文容器)

通过setVariable方法,存储slim的变量名和变量值到variables中,其实就是存储到VariableStore实例中的一个Map类型的variables 变量里
private VariableStore variables = new VariableStore();
public class VariableStore {
  private Map<String, MethodExecutionResult> variables = new HashMap<>();
.
.
.

}

通过修改fitnesse.slim.SlimExecutionContext,来实现定义类实例的变量名:

a) Fitnesse slim框架的DecisionTable类自动保存实例变量到fitnesse变量存储中

b) 修改fitnesse源码->自定义页面脚本中各种Table(ScriptTable,DecisionTable)的类实例变量


7. 修改测试完成后的Summary显示

修改前:Test Pages: 1 right, 0 wrong, 0 ignored, 0 exceptions     Assertions: 198 right, 0 wrong, 622 ignored, 0 exceptions (1.391 seconds)   
修改后:Test Pages: 1 right, 0 wrong, 0 ignored, 0 exceptions     Assertions: 198 right, 0 wrong, 622 ignored, 0 exceptions (1.391 seconds)      Time : 2017-09-15 14:31:31.093


修改fitnesse.reporting.SuiteHtmlFormatter类的makeSummaryContent方法,在return 前加入代码如下:

    String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());    summaryContent += "     ";    summaryContent += String.format(" <strong>Time :</strong> %s", now);


 

1 0
原创粉丝点击