我正在使用JUnit测试,其中通过ByteArrayInputStream为我的类提供输入,并使用ByteArrayOutputStream捕获输出以便与预期输出进行比较。当单独运行这些测试时,它们都能顺利通过。然而,当我运行整个测试类时,只有第一个测试能够通过,之后的测试则会失败,原因是在OutputStream中没有内容。
以下是被测试的类的代码:
package org.oscargs;
// 省略了导入语句以保持简洁
public class Menu {
// 类的成员变量和方法定义
// ...
}
接着是我的测试类的代码:
package org.oscargs;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.*;
import static org.junit.jupiter.api.Assertions.*;
@ExtendWith(MockitoExtension.class)
class MenuTest {
// 测试类的setUp、tearDown方法以及具体的测试方法
// ...
}
当运行所有测试时,我遇到了如下错误日志:
-------------------------------------------------------------------------------
Test set: org.oscargs.MenuTest
-------------------------------------------------------------------------------
// 错误摘要信息
我已经尝试在每个测试执行完毕后关闭并置空流,以避免任何可能干扰后续测试的流泄漏问题。同时,我还尝试将被测试类中的scan
和logger
字段设置为null,但似乎并未见效。
我正在使用Java 17环境和JUnit 5.10.0版本进行开发,并且已经在项目的依赖配置中正确引入了JUnit的相关依赖。
尽管我已经尝试了一些常见的解决办法,但问题依然存在,所以在此寻求帮助。希望能找到解决这个问题的方法,让我的测试在批量运行时也能正常工作。谢谢!