小编Alw*_*ing的帖子

使用 Hilt 时因 ClassCastException 导致 Android 测试失败

我为 Android 应用程序编写 kotlin 代码已经有一段时间了,但我决定也开始为我的应用程序编写测试代码。我在使用 Hilt 时遇到了一些问题。我尝试的是:


    import android.app.Application
    
    open class AbstractApplication: Application()

Run Code Online (Sandbox Code Playgroud)

    @HiltAndroidApp
    class IgmeApplication : IgmeAbstractApplication() {  
    
      @Inject
      lateinit var authenticationManager: AuthenticationManager

             ....
}
Run Code Online (Sandbox Code Playgroud)

然后在Android测试目录中:


    import dagger.hilt.android.testing.CustomTestApplication
    
    @CustomTestApplication(AbstractApplication::class)
    open class HiltTestApplication

Run Code Online (Sandbox Code Playgroud)

    import android.app.Application
    import android.content.Context
    import androidx.test.runner.AndroidJUnitRunner
    
    class HiltTestRunner : AndroidJUnitRunner() {
    
        override fun newApplication(
            cl: ClassLoader?,
            className: String?,
            context: Context?
        ): Application {
            return super.newApplication(cl,HiltTestApp::class.java.name, context)
        }
    }

Run Code Online (Sandbox Code Playgroud)

我的测试课:


    @HiltAndroidTest
    class AuthenticationTest{
    
        @get:Rule
        var hiltRule = HiltAndroidRule(this)
    
        @Test
        fun useAppContext() {
            // Context of the app under …
Run Code Online (Sandbox Code Playgroud)

testing android android-studio dagger-hilt

1
推荐指数
1
解决办法
4247
查看次数

标签 统计

android ×1

android-studio ×1

dagger-hilt ×1

testing ×1