当前位置: 首页 > 面试题库 >

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

养慈
2023-03-14
问题内容

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

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


问题答案:

maven-surefire- plugin目前没有让你这样做。它将所有结果写入单独的文件中。如果您觉得这是缺少的功能,则可以在其问题跟踪器中创建功能请求。

但是,您可以使用一些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报告后,必须从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

结果按消耗的时间排序。



 类似资料:
  • 谁能让我知道如何通过在单个文件中获得单元测试类中每个单元测试所花费的时间?我已经看到我的它有每个测试的文件。基本上,我正在寻找一个单一的文件,所有的执行时间总结。如果可能,还可以按每个测试的执行时间对结果进行排序。 我用的是maven 3.5

  • 我目前正在与CDI Unit合作一个项目,我遇到了一个奇怪的问题。我试图在一个简单的项目中重现它: 我有一个使用CdiRunner运行的测试类(如下所述:http://jglue.org/cdi-unit-user-guide/我的测试类注入了被测试的单元:UUD。这个类扩展了一个超级类“ParentTestClass”,它目前是无用的。 测试课。爪哇: 正如我提到的,父类是空的。 ParentT

  • 我使用PyCharm来运行一个相当大的测试套件(1800个快速测试)。最近修改了一个测试,我意识到我的测试不会出错。当我单独运行这些测试时,确实会中断,但是如果我运行整个测试套件,它们总是会通过。这是由于一些以前的同事对类的这种不正确的嘲笑: 我现在需要检查整个测试套件中模拟的使用情况,但是我想单独运行每个测试,看看哪些测试没有通过(我将这些测试标记为高优先级)。我怎么能从控制台或Py魅力中做到这

  • 我在Dart类中有一个方法,它接受< code>BuildContext参数,如下所示: 我想测试该方法是否按预期工作: 当然,它不起作用,因为方法 需要一个参数 类型。此值在整个应用程序本身中都可用,但不确定在我的单元测试中从何处获取该值。

  • 问题内容: 我有一个测试套件,其结构如下 在以上结构中,我想执行testmethod4()作为最后一个。即)最后执行。有一个@FixMethodOrder注释,它按顺序执行方法而不是testclass。是否有任何机制可以同时维护测试类和测试方法中的顺序。使用@FixMethodOrder,我可以通过重命名测试方法的名称来执行该方法,但是我不能指示junit将测试类作为最后一个(最后一个)执行。 问

  • 这是我在Python中的第一个项目,我刚刚学习了框架。测试模块运行良好,当我做,但当我想执行某个类或方法,如留档中所说,使用: 我得到以下错误: 我运行命令的目录包含(我还尝试将名称更改为),带有和方法都以开头,这里是我在终端上运行的命令: 我在任何地方都找不到类似的问题,知道错误背后的原因以及如何在模块或方法内部运行某个类将是非常好的