java - 如何优雅地依赖注入(inject)原始 boolean 值进行测试?

标签 java android unit-testing dependency-injection

我正在使用 Mockito 进行单元测试,因此,看起来我能够使用 @InjectMocks@Mock 注释注入(inject)某些对象。我假设我可以为对象类型 Booleans

做这个

但是,我似乎无法让它为原始 boolean 工作。我该怎么做呢?或者什么框架允许这样做? (我实际上在做一个 Android 项目)

例如:

class MethCook {
    private Laboratory mLab; // i can inject this
    private Assistant mJessePinkman; // this is injectable too
    private boolean mCanCookPureCrystal; // how do i access/inject this?

    private void cookBlueMeth() { ... }

    private void onTraumatized() {
        mCanCookPureCrystal = false;
        startMoppingAround();
        beDepressed();
        neverWantToCookAgain();
    }
}

注意:优雅意味着简洁和简洁,例如...我不希望在 getter/setter 之上使用 @VisibleForTesting 来访问此 boolean 值;因为这会将状态可变性暴露给外界?

最佳答案

如果存在控制反转(@Autowired/@Value/@Resource),反射就很容易了。

    @Before 
    public void init() {
        Field f = myMethCooking.getClass().getDeclaredField("mCanCookPureCrystal");
        f.setAccessible(true);
        f.set(myMethCooking, false);
    }

java-set-field-value-with-reflection !

关于java - 如何优雅地依赖注入(inject)原始 boolean 值进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296911/

相关文章:

java - Activity ——如何与他们一起工作?

java - 在 AES 中收缩一些密文 block

java - 如何从 HttpServletResponse 获取 xml 字符串 - 调试时

android - 从一项 Activity 移至另一项 Activity 时,键盘会自动弹出

android - 如何让ListView在点击onClickListener后正确显示?

java - 使用手动依赖注入(inject)构建多级对象树

java - 确保静态变量立即被所有线程缓存

java - Flutter 中的 Firebase (FCM) 注册 token

javascript - 如何在 Jest 中模拟导出的常量

unit-testing - 有没有办法让 WatiN 在页面完成加载之前点击链接