gpt4 book ai didi

java - 通过 maven surefire-report 在单个文件中以汇总格式执行单元测试类中的测试执行时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:18 30 4
gpt4 key购买 nike

任何人都可以让我知道如何通过 maven-surefire 获取单个文件中单元测试类中每个单元测试所花费的时间吗?我已经看到我的 target/surefire-report 它有每个测试的文件。基本上我正在寻找一个汇总了所有执行时间的文件。如果可能,还可以按每个测试的执行时间对结果进行排序。

我在 MacOSX 10.12.6 上使用 maven 3.5 和 surefire-plugin 2.4.2。

最佳答案

maven-surefire-plugin 目前不允许您这样做。它将所有结果写入单独的文件中。您可以在其 issue tracker 中创建功能请求,如果您觉得这是一项缺失的功能。

不过,您可以使用一些 Linux 命令将输出转换为您需要的内容。以下是一些命令,可将单独的 XML 文件转换为您想要的单个文件:

grep testcase target/surefire-reports/TEST-*.xml |
sed 's/.* name="\(.*\)" classname="\(.*\)" time="\(.*\)".*/\2#\1() - \3ms/g' |
sort -n -k 3 > output.txt

更新:数字排序存在分数不同的问题数字。使用下面的 awk 版本来解决这个问题。


同样的事情可以用 awk 来完成,更短一些并且不那么神秘:

grep -h testcase target/surefire-reports/TEST-*.xml |
awk -F '"' '{printf("%s#%s() - %.3fms\n", $4, $2, $6); }' |
sort -n -k 3 > output.txt

生成 surefire-reports 后,您必须从 maven 项目的顶层目录执行这些命令。

如果你有多模块项目,请改用它:

find . -name TEST-*.xml -exec grep -h testcase {} \; |
awk -F '"' '{printf("%s#%s() - %.3fms\n", $4, $2, $6); }' |
sort -n -k 3 > output.txt

生成的文件是 output.txt,包含以下格式的行:

<classname>#<methodname>() - <time>ms

结果按消耗时间排序。

关于java - 通过 maven surefire-report 在单个文件中以汇总格式执行单元测试类中的测试执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45854277/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com