import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
/**
* Java自动化测试用例结果统计对象(ST、UT)
* @version 1.0 2011-07-13 11:10
* @author 鬼辅神攻
*/
public class TestResult {
private String caseName = "";
private String caseResult = "";
private String description = "";
private String lineNumber = "";
private String fileName = "";
public String toString() {
StringBuffer toStringBuffer = new StringBuffer("FileName=\"").append(
fileName).append("\" ").append("Line=\"").append(lineNumber)
.append("\" ").append("caseName=\"").append(caseName).append(
"\" ").append("result=\"").append(caseResult).append(
"\" ").append("description=\"").append(description)
.append("\"");
return toStringBuffer.toString();
}
private TestResult() {
// 禁止外部调用new TestResult()
// 外部使用TestResult.add()来添加一个测试用例的结果
}
private static int totalCases = 0;
private static int successCases = 0;
private static int failedCases = 0;
private static ArrayList<TestResult> resultList = new ArrayList<TestResult>();
public static void add(boolean bSuccess, String strDescription) {
TestResult result = new TestResult();
if (bSuccess) {
successCases++;
result.caseResult = "success";
} else {
failedCases++;
result.caseResult = "failed";
}
if (null != strDescription) {
result.description = strDescription;
}
StackTraceElement traceElement = ((new Exception()).getStackTrace())[1];
result.caseName = traceElement.getMethodName();
result.lineNumber = String.valueOf(traceElement.getLineNumber());
result.fileName = traceElement.getFileName();
totalCases++;
resultList.add(result);
System.out.println(result.toString());
}
public static void outPutTestReport() {
String reportFilePath = System.getProperty("user.dir") + "\\"
+ "TestReport.xml";
File file = new File(reportFilePath);
FileOutputStream out = null;
OutputStreamWriter outWriter = null;
PrintWriter pw = null;
try {
out = new FileOutputStream(file);
outWriter = new OutputStreamWriter(out);
pw = new PrintWriter(outWriter);
pw.println("<xml version=\"1.0\" encoding=\"UTF-8\"?>");
pw.println("<testResult total=\"" + totalCases + "\" success=\""
+ successCases + "\" failure=\"" + failedCases + "\" >");
int iCount = resultList.size();
for (int index = 0; index < iCount; index++) {
TestResult usecase = resultList.get(index);
pw.println(" <usecase " + usecase.toString() + " />");
}
pw.println("</testResult>");
pw.println();
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
pw.close();
outWriter.close();
out.close();
} catch (Exception e) {
// no need to handle
}
}
}
public static void main(String[] args) {
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(true,"ok");
TestResult.add(false,"创建网元失败!");
TestResult.outPutTestReport();
}
}
分享到:
相关推荐
本文将深入探讨自动化测试工具、自动化测试框架、性能测试工具、测试用例管理和测试报告工具,以及与之相关的面试问题,特别是与Java和Python编程语言相关的面试题。 首先,自动化测试工具如Selenium、Appium和...
这些框架不仅可以组织和管理测试用例,还可以执行测试,最后统计测试结果。高级框架通常能够集成基础框架,形成更为复杂和灵活的自动化测试解决方案。 ### 3. 基于XML的测试框架的优势和应用 #### 3.1 减少脚本间...
4. 报告生成:自动化测试工具通常提供报告功能,展示测试结果、失败详情和统计信息,帮助分析测试质量。 5. 持续集成:自动化测试可与CI/CD工具(如Jenkins、GitLab CI/CD)集成,实现每次代码提交后的自动测试,...
QuickTest Professional (QTP) 是一款功能回归自动化测试工具,主要用于执行重复的自动化测试,特别适合回归测试和新版本软件的测试。QTP的特点包括: 1. 提供多种插件,覆盖.NET、Java、SAP等,适应不同产品测试。...
在Android自动化测试的众多工具中,Robotium是目前广泛使用的一款自动化测试框架,专门用于编写Android应用的功能测试用例。 Robotium提供了丰富而强大的API,用于模拟用户的各种交互操作,如点击、长按、滑动、...
### Java自动售货机实验知识点总结 #### 一、实验目的 本实验旨在通过实际编程实践,加深学生对Java语言中循环控制结构的理解与运用能力,特别是`for`、`while`以及`do...while`循环的应用场景选择,进一步熟悉`...
首先,文档提到了早期的轻量级接口自动化测试框架中的结果统计分析与展示模块由于浏览器技术迭代更新不再受到主流浏览器支持,尤其是文档对象技术(Document Object Model,DOM)的部分技术不被一些新版浏览器支持,...
3. 创建XML测试报告:可以使用自动化测试框架(如JUnit自带的XML报告生成器)或者自定义脚本来生成XML格式的报告,包含测试用例的名称、执行结果、错误信息等内容。 4. 解析XML测试报告:利用DOM、SAX或XPath等方法...
- **测试方法及工具**:列出所采用的测试策略,如黑盒测试、白盒测试,以及使用的测试工具,如自动化测试框架、缺陷管理工具等。 - **测试过程总结**:回顾测试的时间线,包括测试开始和结束日期,以及关键测试...
- **Test接口**:所有测试类的基类,提供了countTestCases()方法统计测试用例数量,以及run(TestResult)方法执行测试并收集结果。 - **TestCase抽象类**:实现了Test接口,提供setUp()和tearDown()方法,用于初始化...
8. **构建工具**:为了自动化构建和测试过程,项目可能使用了Maven或Gradle,这两个都是Java项目常用的构建工具,能够管理依赖、编译代码、运行测试并打包应用。 9. **单元测试与集成测试**:为了保证代码质量,...
Visual Unit是一款专为C/C++开发的单元测试工具,它以其可视化、自动化和高效的特点受到青睐。通过自动生成测试代码,开发者无需手动编写大量测试代码,大大提高了工作效率。工具提供了可视化编辑测试用例的功能,...