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 UnitTesting 上遇到了与您相同的问题,这为我解决了问题:answer