【问题标题】:can I use a Junit Test as a precondition For another Junit Test [duplicate]我可以使用 Junit 测试作为另一个 Junit 测试的前提条件吗?
【发布时间】:2011-10-28 08:50:16
【问题描述】:

我有一个使用断言的 jUnit 测试(我们称之为 T1)。要使该断言具有任何值,我需要该断言正确的验证器。

对于验证器,我在另一个测试套件中进行了测试 (T2)。我能否以某种方式使 T2 成为 T1 的先决条件。

如果不可能,如果 T1 和 T2 在同一个套件中,是否有可能?

【问题讨论】:

  • 你为什么要这样做?
  • 它在问题中说得对。澄清一下:我有一个过滤器,我在 T1 中对 (T2) 进行了单元测试,我使用该过滤器来验证 T1 中的断言,类似于 assertEquals(filter(unfiltered), actual);因此,如果 T2 没有通过,那么 T1 是否通过并不重要,因为它无论如何都不是有效的测试。

标签: java junit4 preconditions


【解决方案1】:

您考虑在没有出现前提条件时跳过单元测试。通过编码逻辑跳过单元测试是危险的,因为您不会看到是否有任何问题,而且您的代码甚至没有得到测试覆盖率。当一个基本部分被破坏时,最好让更多的测试失败,而不是隐藏错误。请注意,我们谈论的是单元测试,它应该是独立的并测试小块软件。

您可以使用标准具验证器,它不是生产代码的一部分,但必须是一个简单的测试实用程序,不会阻止测试确定运行。最糟糕的是,您的代码中可能存在另一个错误,未连接到验证器,这可能会延迟出现,只是因为测试代码由于先决条件而跳过了关键代码部分。

如果您想在实际中进行集成或功能测试,您应该考虑使用除 JUnit 之外的其他测试框架。在集成测试中,有时跳过其余测试并停止滥用集成环境几分钟/几小时后开始明确地搞砸是有意义的,但在单元测试中,重点是每一段代码都必须得到控制。

当然,您也可以破解 JUnit 中的先决条件,例如在 @BeforeClass/setUp 夹具中进行断言或将“if”分支放入测试中,但它们会欺骗您。

【讨论】:

  • 不,我并没有考虑跳过单元测试,这更像是一个错误定位问题。我可以通过在给定测试中断言先决条件来完成同样的事情,但是我会运行两次相同的测试,这很好避免。
【解决方案2】:

您可以评论 T1,说明它依赖于 T2 才能通过,如果 T2 也失败,则应在解决 T1 之前先修复它

【讨论】:

  • 又好又简单 :) 但技术含量较低
猜你喜欢
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多