【问题标题】:JUnit running a final test?JUnit 运行最终测试?
【发布时间】:2017-05-19 07:36:51
【问题描述】:

关于按特定顺序运行 JUnit 测试的帖子太多了,我完全理解:

  1. 测试不应按特定顺序进行
  2. 并且创作者这样做时没有考虑到 1

但我有创建一堆输出文件的测试用例。我需要能够进行最终测试,收集这些文件,将其压缩并通过电子邮件发送给某人。

有没有办法将 JUnit 测试组合在一起,让我有一个“总结”组来做这件事?或者有更好的方法吗?

我从 Jenkins 运行这些作为 maven 工作。我可以根据之前的作业输出创建另一个作业,但如果我可以一次性完成这一切,我更愿意这样做,这意味着我可以在任何地方运行它,甚至可以从我的 IDE 中运行。

【问题讨论】:

  • 这些测试称为集成测试。如果您需要在那里订购,最好不要使用 JUnit,因为它不支持这一点。使用 TestNG 进行此类操作...
  • 你是对的。我正在使用带有黄瓜的 Junit 对自定义报告文件中的输出进行集成测试。

标签: java maven junit


【解决方案1】:

也许@After@AfterClass 注释正是您要寻找的:

@AfterClass
void cleanupClass() {
    //will run after all tests are finished
}

@After
void cleanup() {
    //will run after every test
}

但是,如果可能,我会考虑通过 Jenkins 来处理这个问题。在我看来,上面的注释是为了清理以前为进行测试而进行的任何类型的设置。

通过电子邮件发送这些文件听起来不像是测试的一部分,因此我倾向于将其分开。

【讨论】:

  • 使用 jenkins 听起来是个好主意...测试编写文件,然后 jenkins 收集并通过电子邮件发送它们,然后进行清理。听起来比将基础设施工作添加到单元测试中更合理且更好。
  • 谢谢 - 我已经在每个测试用例中进行了一些清理工作。然后会坚持使用 Jenkins
【解决方案2】:

我想真正的问题是您希望通过电子邮件发送测试的结果和输出。 您对此使用测试的建议使我走错了路。

一定要使用某种自定义的 Jenkins post hook 来做到这一点。有一些花哨的插件可以让你编写 groovy 代码。

不要为此滥用单元测试。这些(应该)也作为构建的一部分在本地运行,并且您不希望每次都发送该电子邮件。

【讨论】:

  • 我们已经收到如此多的测试电子邮件,这甚至都不好笑。 :) 肯定会使用 Jenkins 来做到这一点。
猜你喜欢
  • 2014-12-12
  • 2013-08-23
  • 2011-11-12
  • 2016-07-28
  • 2011-01-30
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多