确保已安装所需的依赖项。在命令行中运行以下命令:
npm install jest exceljs ts-node @types/node
创建一个名为 excel-reporter.ts 的新文件,并将以下示例代码复制到文件中:
import { DefaultReporter, Test } from'@jest/reporters';
import { Workbook, Worksheet } from'exceljs';
classExcelReporterextendsDefaultReporter {
privateresults: { name: string; status: string }[] = [];
onRunComplete(contexts: Set<Test>, results: any) {
super.onRunComplete(contexts, results);
this.generateExcelReport();
}
generateExcelReport() {
const workbook = newWorkbook();
const worksheet = workbook.addWorksheet('测试报告');
worksheet.columns = [
{ header: '测试名称', key: 'name', width: 30 },
{ header: '测试状态', key: 'status', width: 20 },
];
for (const result of this.results) {
const row = worksheet.addRow(result);
row.commit();
}
workbook.xlsx.writeFile('test-report.xlsx');
}
onTestResult(test: Test, testResult: any, aggregatedResult: any) {
super.onTestResult(test, testResult, aggregatedResult);
const result = {
name: testResult.testResults[0].title,
status: testResult.testResults[0].status,
};
this.results.push(result);
}
}
export default ExcelReporter;
在这个示例中,我们使用了 TypeScript 语法重写了自定义 reporter,并对一些类型进行了调整。
创建一个名为 jest.config.ts 的新文件,并将以下示例代码复制到文件中:
import ExcelReporter from './excel-reporter';
export default {
reporters: [
['<rootDir>/excel-reporter.ts', {}],
],
};
在这个示例中,我们使用了 TypeScript 的语法导入了自定义 reporter,并将其添加到 Jest 的 reporters 配置中。
创建一个名为 example.test.ts 的测试文件,并编写您的测试用例。
在命令行中运行以下命令来执行测试并生成 Excel 报告:
npx jest --config=jest.config.ts
执行完毕后,您将在当前目录下找到名为 test-report.xlsx 的 Excel 报告文件。
请确保 jest.config.ts 和 excel-reporter.ts 中的路径和文件名与实际项目中的路径和文件名一致。此外,确保 TypeScript 配置正确,以便能够正确编译和执行 TypeScript 文件。