java - 为 JUnit 测试重置静态字段

标签 java junit

我有一组 JUnit 测试,它们调用 Java 程序的主要方法,传入参数并检查输出。没关系。

但是,如果我正在测试的程序具有已更改的静态值,它们将在测试之间保持不变。这会导致问题。我无法控制正在测试的程序是什么,也无法控制用于静态字段的名称。

如何确保我的单元测试干净利落地运行,就好像它是从头开始程序一样,而不保留那些静态字段。有没有办法以某种方式重置它们?

如果没有,我将不得不启动一个运行该程序的新进程,然后检查输出等,但这似乎有点矫枉过正。

编辑 - 请注意我无法控制单元测试正在测试的代码 - 我无法更改它们的字段名称,不幸的是,我也不知道它们的字段名称。我在想,如果不开始一个新流程,这不可能实现?

最佳答案

您应该显式初始化测试类中的任何静态状态,通常这是在注释为 @Before@BeforeClass

的方法中完成的

这就是为什么在应用程序中有很多静态依赖项不利于测试的原因之一。这就是为什么许多人鼓励无状态编程。

关于java - 为 JUnit 测试重置静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234742/

相关文章:

java - java中标记为垃圾收集与符合垃圾收集资格

java - GraphQL 禁用输入验证,添加自定义错误

java - 动态加载类后向 junit 测试套件添加拆卸方法

Android 应用程序单元测试

java - 为 ElasticSearch 测试用例创建虚拟 SearchResponse 实例

java - SonarQube 未使用 Java 8 测量代码覆盖率

java - 通过解析表格数据创建Java对象

java - 从 Shoutcast.com 检索电台

java - XML 解析器安卓

java - 如何使用 gradle 为 Junit 测试授予写入权限