重写方法IntelliJ上的自定义警告注释

时间:2016-10-12 10:57:49

标签: java android android-studio intellij-idea annotations

在我的项目中,我有一个基本方法,我不希望用户覆盖。然而,我无法将此方法设为final或private,因为我使用mockito来验证该方法是否被调用以进行测试,并且我们无法在项目中使用power mock。有没有办法制作一个自定义注释,警告其他开发人员,如果他们试图覆盖所述方法?代码示例如下:

public abstract class BaseActivity {
    public void superOnResume() {
        super.onResume();
    }

    public  void superOnPause() {
        super.onPause();
    }

} 

public class ChildActivity extends BaseActivity {

    @Override
    public void onPause(){
           superOnPause();
    }

    @Override
    public void onResume(){
           superOnResume();
    }

    //Warning annotation needed here!
    public void superOnPause(){
      super.onPause();
    }

}

假冒测试示例:

@RunWith(MockitoJUnitRunner.class)
public class ChildActivityTest {

    ChildActivity childActivity;

    @Before
    public void setUp() throws Exception {
        childActivity = spy(new ChildActivity());
    }

    @Test
    public void testOnPause() {
        doNothing().when(childActivity).superOnPause();
        childActivity.onPause();
        verify(childActivity).superOnPause();
}

以下代码允许我测试活动中的onResume / Pause方法。问题是有很多类扩展了baseActivity。如果有人意外创建/覆盖超级OnPause / onResume,它将在运行时调用无限循环。

0 个答案:

没有答案
相关问题