【问题标题】:PowerMock test Activity onCreatePowerMock 测试活动 onCreate
【发布时间】:2016-03-12 20:39:18
【问题描述】:

我正在尝试测试 android 活动的 onCreate 方法。 该活动名为LoginActivity,它继承自AppCompatActivity。 该方法调用AppCompatActivitysuper.onCreate() 方法,在调用getWindow 时它在内部深处失败。它会抛出未模拟的错误。

所以我试图通过这样做来抑制AppCompatActivity的方法:

Method[] appCompatActivityOnCreateMethods =
        PowerMockito.methods(AppCompatActivity.class, "onCreate");

PowerMockito.suppress(appCompatActivityOnCreateMethods);

loginActivity = spy(new LoginActivity());

但它似乎不起作用。当我打电话时:

loginActivity.onCreate(mock(Bundle.class));

它仍然调用super.onCreate 方法。

我为AppCompatActivity 和我的LoginActivity 做了一个@PrepareForTest()

我错过了什么?

【问题讨论】:

    标签: android testing mockito powermock


    【解决方案1】:

    假设你做了你写的,而不是你没有写的,你忘了使用PowerMockRunner。来自Getting Started Guide

    @RunWith(PowerMockRunner.class)
    @PrepareForTest( { YourClassWithEgStaticMethod.class })
    public class YourTestCase {
        ...
    }
    

    【讨论】:

    • 我也写过,我发现它是 1.6.4 版本的 power mock 中的一个错误,将在 1.6.5 中修复。错误在于它不会抑制间谍上的受保护方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多