是否可以覆盖子类测试脚本中的 junit 规则?

use*_*774 5 java junit

我有一个基本的测试类,我所有的其他测试用例都从它继承而来。

在超类中,我通过以下方式设置了一个全局计时器:

@Rule 
public Timeout globalTimeout = new Timeout(30000);
Run Code Online (Sandbox Code Playgroud)

但是,对于子类中的某些方法,我希望超时时间更长。

例如:

@test(timeout=alongtime)
private void sometTest()
Run Code Online (Sandbox Code Playgroud)

但这似乎根本不影响全局计时器,我通过在全局设置非常短的超时和在子类中设置非常长的超时进行了测试。

有没有办法让 JUnit 遵守在方法上定义的超时?

Nam*_*ter 1

我有一个基本的测试类,我的所有其他测试用例都继承自该类。

不要那样做。

使用继承来共享测试代码不太灵活。使用委托来共享代码。这种情况下,只需在需要的测试类中添加超时规则即可。大多数测试应该是单元测试,并且不需要超时。

如果基类中有很多逻辑,请将其提取到另一个类(可能是自定义规则)。

  • 我认为你的帖子不是一个答案,更多的是一个评论,因为最后OP问题与摘要完全无关。如果您在类中定义规则并且无法针对特定测试覆盖它,问题是相同的:这是 Junit 中的一个已知问题。 (2认同)