使用Mockito来测试没有调用super

时间:2013-05-03 19:10:27

标签: android unit-testing mockito

我可以使用Mockito测试调用我对象上的方法是否调用超级实现?我找不到办法做到这一点。基本上我想要这样的东西:

@RunWith(RobolectricTestRunnerWithInjection.class)
public class TestFragmentTest {
    @Spy private TestFragment testFragment;

    @Test
    public void onConfigurationChanged_shouldNotCallSuper() {
        doThrow(new RuntimeException("Should not call super!")).when(superOf(testFragment))
            .onConfigurationChanged(null);

        testFragment.onConfigurationChanged(null);
    }

    private static class TestFragment extends Fragment {
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
        }
    }
}

Mockito当然没有superOf实用程序,但这表达了我正在寻找的行为。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在您的超类中放置一个特殊变量,该变量仅在您在子类中调用的构造函数中初始化。

通过这种方式,您可以添加一个函数来检查变量是否已在超类中更改。