java - 替换测试中的静态变量

标签 java junit static

我有一个辅助类,其中包含一些静态最终字符串,如下所示

public static final String abc = "abc"

但在我的测试中,我想使用该值

public static final String abc = "xyz"

所以我添加了以下内容

private static final HelperClass mock = mock(HelperClass.class);


@Before
when(mock.abc).thenReturn("xyz")

要测试的实际代码

public void codeToTest() {
  // use Helperclass.abc
  // other logic

但是不允许此声明,因为它需要是方法调用。 (MissingMethodInitation) 如何在测试中使用静态变量?

最佳答案

静态值可能会使某些测试变得更加困难。您将无法使用模拟来获取此值。但我不得不问你为什么要 mock 这个。它没有测试辅助类中的任何内容来访问此变量,并且您需要一个常量,为什么不在测试中定义和使用该常量呢?

关于java - 替换测试中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43186966/

相关文章:

java - 假装 : file upload configuration

java - Jetty,isSecure() 在 HTTPS 连接上返回 false

java - 如何测试文件提取

java - SpringJUnit4ClassRunner 应该初始化它的上下文多少次?

c# - 从 GenericClass<T> 访问静态方法,其中 T 由 Type 实例给出

c# - 静态类/方法 this 和泛型

javascript - 所有选项卡内容均在页面加载时出现。我只想显示 Activity 选项卡数据

java - 在单元测试中有一个 spring 上下文

java - 实例化静态嵌套类而不限定封闭类

Java:原始类型与泛型