我正在进行测试并尝试某些操作,并且注意到一种奇怪的行为。
@Test
public void setupActivity()
{
Activity activity = new Activity();
}
以上测试成功运行,没有引发运行时异常。
@Test
public void setupActivity()
{
Activity activity = new Activity();
activity.isFinishing();
}
这又引发了isFinishing()方法的运行时异常。
为什么调用构造函数时没有抛出异常? 当我查看android.jar中Activity.class的代码时,包括构造函数在内的所有方法都应抛出运行时异常。
public Activity() {
throw new RuntimeException("Stub!");
}
public boolean isFinishing() {
throw new RuntimeException("Stub!");
}
JUnit运行器是否有问题?我正在使用JUnit4运行测试。
答案 0 :(得分:0)
为什么调用构造函数时没有抛出异常?
因为创建Activity
的实例是合理且必要的。该框架将根据Activity
的请求,配置更改等,根据需要通过其构造函数创建startActivity()
的实例。
当我查看android.jar中Activity.class的代码时,包括构造函数在内的所有方法都应抛出运行时异常。
您正在查看Android SDK中android.jar
的反编译版本。那不是运行时使用的类。运行时使用的Activity
的版本将基于设备上的Android版本,以及设备制造商可能进行的调整。例如,here is the source to Android 9.0's edition of Activity
。