【问题标题】:Running JUnit with both Spring and Parameterized使用 Spring 和 Parameterized 运行 JUnit
【发布时间】:2018-06-01 00:28:33
【问题描述】:

我有某些需要 Spring 上下文的集成测试,并且将从参数化测试中受益匪浅(将删除大量重复代码)。我目前正在使用类注释运行测试

@RunWith(Parameterized.class)

然后我用

加载 Spring 上下文
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();

@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();

上述工作,但坦率地说,我不知道它实际上在做什么。谁能解释一下,还有其他方法可以与 Spring 同时运行参数化测试吗?

【问题讨论】:

  • 哪一部分不明白?您是否希望这里的答案涵盖所有 JUnit 运行程序、JUnit 规则和 Spring 测试?投票给这个问题太广泛了。更具体。

标签: java spring junit


【解决方案1】:

任何 IDE 都允许您跳转到 SPring 规则的定义并对其进行调试。 JUnit 参数化类也是如此。

  • JUnit Rule 在每个方法之前和之后,以及在课前和课后进行准备。
  • JUnit Runner在每个方法之前和之后,以及之前和之后进行准备,然后运行所有方法

两个 Spring 测试规则都进行与 Spring Runner 相同的准备/清理工作。

如您所见,rule 和 runners 的作用基本相同,存在 Spring runner 的唯一原因是为了方便。

其他合理运行的方法可能是使用 JUnit5 或 TestNG,而不是 JUnit4。或者可能有一种方法可以在 @Before 方法中设置所有弹簧上下文,而不是使用注释。 但实际上,您一直在做的是将 Spring 设置与参数化测试相结合的推荐方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2019-06-06
    • 2016-07-21
    相关资源
    最近更新 更多