如何解决运行测试用例时,在活动中获取 hilt 注入对象上的空指针对象
请在我的 Module 类下面检查,我在其中定义了需要使用 Hilt
NVModule.kt
@Module
@InstallIn(SingletonComponent::class)
class NVModule {
@Provides
@Named("ProfileHelper")
fun abprovideProfileHelper(): ProfileHelper {
return ProfileHelper(AppController.getInstance())
}
}
现在请检查我的接口,我通过它使用 EntryPoint
访问了 Activity/Fragment
之外的依赖注入,例如 Helper
类。
@EntryPoint
@InstallIn(SingletonComponent.class)
public interface CommonHiltInterface {
@Named("ProfileHelper")
public ProfileHelper provideProfileHelper();
}
}
现在请检查我使用了如下依赖注入的 Activity
类,在这里工作正常。意味着正确获得依赖注入
public class HomeActivity extends BaseActivity{
private ActivityHomescreenBinding
activityHomescreenBinding;
private Activity context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
activityHomescreenBinding =
DataBindingUtil.inflate(getLayoutInflater(),R.layout.activity_homescreen,null,false);
setContentView(activityHomescreenBinding.getRoot());
CommonHiltInterface commonHiltInterface = EntryPointAccessors.fromApplication(context,CommonHiltInterface.class);
commonHiltInterface.provideProfileHelper().setData();
}
}
但是在测试用例的情况下,依赖注入得到 NullPointerException 。我在测试用例中使用了 Robolectric。请检查我下面的 RobolectricTest 案例代码行。
@HiltAndroidTest
@RunWith(RobolectricTestRunner.class)
@Config(application = HiltTestApplication.class,sdk = Build.VERSION_CODES.N,manifest = Config.NONE)
public class HomeActivityTest {
@Rule
public HiltAndroidRule hiltRule = new
HiltAndroidRule(this);
@Before
public void setUp() throws Exception {
shadowOf(Looper.getMainLooper()).idle();
hiltRule.inject();
activity =
Robolectric.buildActivity(HomeActivity.class).
create().resume().get();
}
}
注意 :- 1).我也将 @HiltAndroidApp()
用于应用程序类。并使用 2.36 版本进行刀柄依赖
2)。我的依赖注入适用于 Activity/Fagment 和 Helper 类等 Java 类,但不适用于测试用例。
请检查我对 Hilt 的依赖如下
testImplementation 'com.google.dagger:hilt-android-testing:2.36'
kaptTest 'com.google.dagger:hilt-android-compiler:2.36'
testAnnotationProcessor 'com.google.dagger:hilt-android-compiler:2.36'
androidTestImplementation 'com.google.dagger:hilt-android-testing:2.36'
kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.36'
应用程序运行成功,但在测试用例的情况下,我在 Activity (HomeActivity) 的代码行下方收到空指针异常。
CommonHiltInterface commonHiltInterface = EntryPointAccessors.fromApplication(context,CommonHiltInterface.class);
commonHiltInterface.provideProfileHelper().setData();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。