【发布时间】:2011-05-05 02:41:35
【问题描述】:
问题
当我使用 eclipse 运行所有 JUnit 测试时,我可以设置默认超时吗?
背景
我的经理坚持编写有时需要 5 分钟才能完成的单元测试。当我尝试运行我们的整个测试套件(只有大约 300 个测试)时,可能需要 30 多分钟。我想放置一些东西来停止任何需要超过 10 秒的测试。
我知道可以对单个测试进行注释:
@Test(timeout=10000)
但是这样做会使他的长时间测试总是失败。当他在他的盒子上运行它们时,我希望它们能够工作(如果我必须在签入之前对项目进行细微调整,这是可以接受的。但是,从 40 个不同的测试文件中删除超时是不切实际的)。
我也知道我可以创建一个 ant 任务来为所有测试设置默认超时,如下所示:
<junit timeout="10000">
...
</junit>
问题在于,我们通常使用 右键单击 > 运行方式 > JUnit 测试从 Eclipse 内部运行测试。
总结
那么有没有一种相对轻松的方法来为所有测试设置超时,可能使用运行配置设置、项目设置、JUnit 首选项、环境变量等?我什至会安装一些其他插件,让我可以右键单击特定的测试文件夹并以其他方式运行所有测试,例如通过 ant 或其他方式...
【问题讨论】:
-
测试需要 5 分钟?听起来他们要么在每个测试中做太多 far 要么他们是集成测试而不是单元测试......
-
您可以将集成测试与 junit-tests 分开。长时间运行的测试应该在像 hudson 这样的构建服务器上运行,而不是在本地机器上。
-
@Donal:不幸的是,它们是单元测试。我不喜欢他们。我不同意他们的看法。然而,我对他们无能为力。因此我的问题......我的目标是,至少,消除我盒子上的问题。我想我要写一个切面来用
@test(timeout=10)注释所有的测试方法。然后,我永远不会将这方面检查到 Subversion 中。这是我的计划,我想…… -
方面方法不起作用,因为这些方法已经有一个@Test 注释,并且目前在 AspectJ 中没有替换注释的机制。 .. 不过,我认为它正在开发中。
-
@Test(timeout=10)表示超时 10 毫秒 而不是 10 秒。
标签: java eclipse unit-testing junit timeout