用JUnit调用Activity构造函数没有引发运行时异常?

时间:2018-09-02 15:42:14

标签: java android android-activity junit junit4

我正在进行测试并尝试某些操作,并且注意到一种奇怪的行为。

@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运行测试。

1 个答案:

答案 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