如何从使用JUnit 4的Before和After注释的方法中排除执行时间

问题描述 投票:0回答:1

我正在使用JUnit 4运行一些简单的性能测试,并使用Jenkin的perfReport,以便可以生成性能报告。

[运行这些测试时,我注意到测试方法的执行包括用JUnit 4的@before和@after注释的方法的执行时间。

[我遇到过类似的文章:Exclude @Before method duration from JUnit test time,但是由于Jenkin的perfReport仅解析JUnit样式格式,因此我需要JUnit样式报告中的输出格式。

这样,有没有一种方法可以排除这些带注释的方法的执行时间?

java junit junit4
1个回答
0
投票

我通过执行以下操作解决了它:

  1. 扩展BlockJUnit4Runner
  2. 覆盖runChild()方法,因为这是接收测试通知者的位置
  3. 编写自定义runLeaf()方法,因为这是激发测试通知程序以通知测试已开始或停止的地方。
  4. 覆盖methodInvoker()方法,因为这是调用测试方法的位置
  5. 创建一个新的Statement类,该类在功能上与在methodInvoker中创建的invokeMethod()语句对象执行相同的操作集。但是,该类接收测试通知程序,从而使您可以控制如何以及何时开始测试。

上述方法的一个问题是,您将需要提取有助于运行JUnit规则的代码节,以保留规则执行,因为这些方法奇怪地是私有的。

© www.soinside.com 2019 - 2024. All rights reserved.