【发布时间】:2013-04-15 20:29:59
【问题描述】:
我想在 java 程序中运行 jUnit 测试用例并在超时后停止运行。为了执行测试,我使用 JUnitCore 的 run(Request) 方法。
测试类包含需要大量时间和/或不会终止的方法。因此,我希望能够停止执行。
但是,jUnit 的 pleaseStop 标志仅在完成测试用例后才考虑,方法不能被中断并且内容(例如可以关闭的已用 IO 资源)是未知的。此外,我想避免使用进程。
还有其他方法可以停止单个测试用例的执行吗?
在线程间不共享资源的情况下使用Thread.suspend()可以吗?
(我读过 Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?)
【问题讨论】:
-
对于测试,挂起线程应该没问题,只要它不是因为竞争条件而导致测试失败的关键任务。
-
你能改进你测试的代码吗?如果您可以更改它以使其不会“挂起”,并且当资源不可用或阻塞时它会自行运行(即在您的代码中添加超时),您会更好。生产中的挂起流程会发生什么?还可以考虑为在无限循环中处理的任何线程添加“取消”方法。
-
不,程序的目的是运行变异测试,测试用例不能修改/未知。
标签: java multithreading unit-testing junit abort