在我的项目中,我有一个基本方法,我不希望用户覆盖。然而,我无法将此方法设为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,它将在运行时调用无限循环。