gpt4 book ai didi

java - JUnit 和 InterruptedException

转载 作者:行者123 更新时间:2023-12-01 08:59:35 24 4
gpt4 key购买 nike

我在 JUnit 文档中找到了以下示例:

public static class HasGlobalLongTimeout {

@Rule
public Timeout globalTimeout= new Timeout(20);

@Test
public void run1() throws InterruptedException {
Thread.sleep(100);
}

@Test
public void infiniteLoop() {
while (true) {}
}
}

据我了解,每当 JUnit 尝试中断第一个测试时,它都会中断正在运行的线程,并抛出 InterruptedException,从而导致测试完成。

但是第二个测试(infiniteLoop)呢?它没有扔任何东西。超时后如何停止?

最佳答案

超时规则在单独的线程中运行每个测试,并等待超时。超时后,线程被中断。然后测试运行者将继续进行下一个测试。它不会等待任何对中断的响应,因此测试可以在后台自由地继续运行。

infiniteLoop 不会抛出任何 InterruptedException,而是在运行任何剩余测试时继续运行。

一旦所有测试完成,运行测试的 JVM 通常会终止,其中的所有线程也会终止。要么是因为线程被标记为守护线程,要么是通过 System.exit 调用。

查看源代码:

关于java - JUnit 和 InterruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41792990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com