public void run() { try { FileCleanTaskResponse poll = pollTasks(1); List<FileCleanTask> tasks = poll.getCleanTasks(); log.info("cleantasks:" + tasks); if (tasks.isEmpty()) { try { Thread.sleep(60000); } catch (InterruptedException e) { log.error("InterruptedException while sleeping",e); } }直接用这段写一段ut抛异常的代码
时间: 2024-02-10 07:17:34 浏览: 73
抛出异常代码示例
在这段代码中,有一个可能会抛出 `InterruptedException` 的操作,即 `Thread.sleep(60000)`。那么我们可以编写一个测试方法,模拟这个操作抛出异常的情况。具体代码如下:
```java
import org.junit.Test;
import static org.mockito.Mockito.*;
public class FileCleanerTest {
@Test(expected = InterruptedException.class)
public void testRun() throws InterruptedException {
// 创建一个 FileCleaner 对象
FileCleaner fileCleaner = new FileCleaner();
// 模拟 pollTasks 方法返回的 FileCleanTaskResponse 对象
FileCleanTaskResponse taskResponse = new FileCleanTaskResponse();
taskResponse.setCleanTasks(new ArrayList<>());
when(fileCleaner.pollTasks(1)).thenReturn(taskResponse);
// 调用 run 方法
Thread thread = new Thread(fileCleaner);
thread.start();
// 模拟 InterruptedException 异常被抛出
Thread.sleep(1000);
thread.interrupt();
}
}
```
在上面的测试方法中,我们首先创建了一个 `FileCleaner` 对象。然后使用 Mockito 模拟了 `pollTasks` 方法的返回值,使其返回一个空的 `FileCleanTaskResponse` 对象。接着,我们创建了一个新的线程,并将 `FileCleaner` 对象传入其中,并启动线程。然后我们使用 `Thread.sleep(1000)` 暂停当前线程 1 秒钟,以保证 `FileCleaner` 线程已经执行到了 `Thread.sleep(60000)` 这一行代码。最后,我们调用 `thread.interrupt()` 方法模拟 `InterruptedException` 异常被抛出,从而触发测试方法中的异常断言。
阅读全文