gMa*_*ale 16 java eclipse junit unit-testing timeout
题
当我运行所有JUnit测试时,使用eclipse,我可以设置默认超时吗?
背景
我的经理坚持编写单元测试,有时需要5分钟才能完成.当我尝试运行我们的整个测试套件(仅约300次测试)时,可能需要30多分钟.我想放置一些可以阻止任何超过10秒的测试的东西.
我知道个别测试可以注释:
@Test(timeout=10000)
Run Code Online (Sandbox Code Playgroud)
但这样做会使他的长期测试总是失败.我希望他们在他的盒子上运行时工作(如果我必须在检查之前对项目进行微调,那是可以接受的.但是,从40个不同的测试文件中删除超时是不切实际的).
我也知道我可以创建一个ant任务来为所有测试设置默认超时,类似于:
<junit timeout="10000">
...
</junit>
Run Code Online (Sandbox Code Playgroud)
问题是我们通常使用右键单击>运行方式> JUnit测试从Eclipse中运行测试.
摘要
那么是否有一种相对无痛的方法为所有测试设置超时,可能使用运行配置设置,项目设置,或JUnit首选项,或环境变量,或什么?我甚至决定安装一些其他插件,让我右键单击特定的测试文件夹,并以其他方式运行所有测试,如通过蚂蚁或其他东西......
ala*_*ter 11
可能的解决方案:从另一个类扩展所有Test类:TestBase例如
添加到TestBase全局超时.此超时将应用于所有扩展类:
public class TestBase {
@Rule
public Timeout globalTimeout = new Timeout(10000);
}
Run Code Online (Sandbox Code Playgroud)
bra*_*ain -2
我知道这并不能真正回答你的问题,但简单的答案是不能!
有条件地设置超时是错误的,因为这样你就会在你的机器上进行单元测试,而你总是会失败。单元测试的目的是能够快速发现您没有破坏任何东西。必须检查失败的测试列表以确保它只是长时间运行的测试,这只会让一些错误得以通过。
正如一些评论者提到的,您应该将测试分成运行快速的单元测试和运行较慢的集成测试,即为您的代码有一个名为 src/main/java 的源文件夹,为单元测试使用 src/test/java ,为单元测试使用 src/ Integration-test/java 用于长时间运行的测试。
| 归档时间: |
|
| 查看次数: |
11795 次 |
| 最近记录: |