java 17,ReflectionHelpers.setStaticField 不适用于最终字段

问题描述 投票:0回答:1

Android项目的单元测试,需要用不同的

BuildConfig.DEBUG
值进行测试

BuildConfig 类将 DEBUG 作为最终的

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
}

此代码在更新到 java 17 之前可以正常工作

ReflectionHelpers.setStaticField(BuildConfig.class, "DEBUG", true);

使用 java 17,现在出现错误:

IllegalArgumentException: Cannot set the value of final field public static final boolean com.oath.mobile.shadowfax.adm.BuildConfig.DEBUG
java.lang.RuntimeException: java.lang.RuntimeException: 

我认为对于测试用例,我们可以修改代码以使用

BuildConfig.DEBUG
值的函数。但一般来说,有没有其他方法可以修改类的最终字段?

android unit-testing reflection
1个回答
0
投票

我在 Android UnitTesting 上遇到了与您相同的问题,这为我解决了问题:answer

© www.soinside.com 2019 - 2024. All rights reserved.