接下来要对TestMain中的方法逐个进行分析:
首先 是HtmlFile .java,在主方法中的应用为:
HtmlFile hf = new HtmlFile(); hf.createLog("C:/Code/1.html");
看名称就知道,其实实现的东西很简单就是创建1.html作为Log输出文件。
具体的实现代码如下:
public class HtmlFile implements IFile { private FileHandler fileHandler; private Logger logger = Logger.getLogger(HtmlFile.class.getName()); @Override public void write(String p_info) { // TODO Auto-generated method stub } @Override public void createLog(String p_info) { // TODO Auto-generated method stub // String p_info 是文件路径 try { fileHandler = new FileHandler(p_info); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } fileHandler.setFormatter(new HtmlFormatter()); logger.addHandler(fileHandler); } @Override public void closeLog() { // TODO Auto-generated method stub fileHandler.close(); RecordStore.p_pass = 0; RecordStore.p_fail = 0; RecordStore.result = ""; RecordStore.expected = ""; RecordStore.actual = ""; RecordStore.instruction = ""; RecordStore.i = 0; } @Override public void write(String p_info1, String p_info2) { // TODO Auto-generated method stub } @Override public String read() { // TODO Auto-generated method stub return null; } @Override public String read(String p_info) { // TODO Auto-generated method stub return null; } @Override public String read(String p_info1, String p_info2) { // TODO Auto-generated method stub return null; } @Override public void write(Object p_info1, Object p_info2, Object p_info3) { // TODO Auto-generated method stub // 重写方法的时候,第一个值是 Case说明,第二个是实际结果,第三个是标识是否成功 RecordStore.i++; RecordStore.instruction = (String) p_info1; RecordStore.actual = p_info2; if (p_info1 != null && p_info2 != null && p_info1 != "") { if ("True".equalsIgnoreCase((String) p_info3)) { RecordStore.result = "True"; RecordStore.p_pass ++; }else { RecordStore.result = "False"; RecordStore.p_fail ++; } logger.info((String) p_info1); } } }
解释:
1. 因为这个类,实现了IFile的接口的方法,而IFile只是定义了不同的写,读,创建文件的方法。所以这里只是为了更好的兼容以后的输出不同的Log格式,没有什么太大的用处。
2. 实现createLog方法,通过手动输入“FilePath”的方式来创建一个Html文件来保存文件。
注意以下代码:
fileHandler.setFormatter(new HtmlFormatter());
因为是使用HTML的格式来输出统计报告,所以需要使用到setFormatter 方法,而Java中原有的是针对ini,或者 Properties格式的文件进行的格式化,所以需要自己重新写一个针对HTML的格式化类。即 HtmlFormatter();
3. 实现closeLog()方法,首先是关闭文件系统,另外需要把所有的记录清空掉。
4. 实现Write()方法,把一些信息放到RecordStore中。剩下的信息,写入log中