【发布时间】:2015-03-15 01:30:24
【问题描述】:
我可以通过配置在每个测试用例/套件之前添加要运行的代码,而不更改代码吗? 有没有办法在一个地方而不是许多文件中为大量测试添加设置逻辑?
用例:目前有数百个 Junit 测试失败。一个解决方案是简单地在所有这些之前运行一段代码(或者至少与 JVM 启动一样多次),来做一些单例初始化。我现在想避免更改数百个文件,只是以某种方式要求 Junit 执行给定的 init 类/方法。 (原因:1)尽量减少重复 2)我们处于某种代码冻结状态 - 最好不要提交 repo)
我想我可以扩展 TestRunner 类,并在那里进行初始化 - 但也许有更好的方法。顺便说一句,该套件是通过 Ant 运行的,我也看不到通过我自己的测试运行程序的方法。
【问题讨论】:
-
扩展测试运行器可能不是最好的方式,但它可能是最简单的。理想情况下,您希望在每个测试中的方法上都有
@BeforeClass注释,但正如您所说,更改数百个文件可能会降低这个选项的吸引力。 -
旧的“搜索和替换”怎么样?使用一些巧妙的正则表达式,您可能可以将 setup 方法插入到所有测试用例中。
-
感谢@RyanJ - 关于如何使用 ant 脚本中的自定义测试运行器的任何想法?
-
@isnot2bad - 是的,我可以使用正则表达式自动添加样板代码..但我想避免它,尤其是我们处于代码冻结状态..(Q 更新)
-
鉴于您所处的情况,您可以尝试“org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter”。名称是格式化程序,但您可以侦听诸如套件启动、测试启动等事件并执行一些常见的事情(无论您想到什么)。文档ant.apache.org/manual/Tasks/junit.html