java - 使用 JUnit 调用 Activity 构造函数没有引发运行时异常?
问题描述
我正在运行测试并尝试一些东西,并注意到一个奇怪的行为。
@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 来运行我的测试。
解决方案
为什么调用构造函数没有抛出异常?
因为创建 an 的实例Activity
是合理且必要的。Activity
该框架将根据startActivity()
请求、配置更改等根据需要通过其构造函数创建您的实例。
当我查看 android.jar 中 Activity.class 的代码时,包括构造函数在内的所有方法都应该引发运行时异常。
您正在查看android.jar
Android SDK 中的反编译版本。那不是在运行时使用的类。运行时使用的版本Activity
将基于设备上的 Android 版本,可能还会由设备制造商进行调整。例如,这里是 Android 9.0 版本的Activity
.