使用 Robolectric 测试片段时如何修复 'java.lang.ClassCastException'
How to fix 'java.lang.ClassCastException' when testing fragment using Robolectric
我正在使用 Robolectric 测试我的片段,我在我的一些片段中遇到了一个问题,导致它们变得无法测试。我正在我的 Activity 中创建一个进度条,然后在我的片段中使用它。这意味着我将 getActivity() 转换为适当的 activity(在本例中为 LoginActivity)。当这是 运行 和 Robolectric 时,它会给出以下错误:
java.lang.ClassCastException: org.robolectric.shadows.support.v4.SupportFragmentTestUtil$FragmentUtilActivity 无法转换为 com.arproject.russell.ar_t.login.LoginActivity
如果能帮助我解决这个问题,我将不胜感激。
public static LoginFragment newInstance() {
return new LoginFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressBar = ((LoginActivity) getActivity()).findViewById(R.id.progress_bar);
}
您无需强制转换 activity 即可获得进度条视图。这也应该有效:
progressBar = getActivity().findViewById(R.id.progress_bar);
我正在使用 Robolectric 测试我的片段,我在我的一些片段中遇到了一个问题,导致它们变得无法测试。我正在我的 Activity 中创建一个进度条,然后在我的片段中使用它。这意味着我将 getActivity() 转换为适当的 activity(在本例中为 LoginActivity)。当这是 运行 和 Robolectric 时,它会给出以下错误:
java.lang.ClassCastException: org.robolectric.shadows.support.v4.SupportFragmentTestUtil$FragmentUtilActivity 无法转换为 com.arproject.russell.ar_t.login.LoginActivity
如果能帮助我解决这个问题,我将不胜感激。
public static LoginFragment newInstance() {
return new LoginFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressBar = ((LoginActivity) getActivity()).findViewById(R.id.progress_bar);
}
您无需强制转换 activity 即可获得进度条视图。这也应该有效:
progressBar = getActivity().findViewById(R.id.progress_bar);