0

Class using "context"

So in MainActivity.kt everything is great

But in test it doesn't work

package com.example.testwork

import org.junit.Assert
import org.junit.Test

class PrefManagerTest {

    lateinit var prefManager: PrefManager

    @Test
    fun getUsername() {
        prefManager = PrefManager(this)
        prefManager.setUsername("name")
        Assert.assertEquals("name", prefManager.getUsername())
    }
}

In general I'm trying to test my function in PrefManager.kt, which gives name PrefManager.kt

package com.example.testwork

import android.content.Context
import android.content.SharedPreferences

class PrefManager(context: Context?) {
    //Shared Pref Mode
    val PRIVATE_MODE: Int = 0

    //SharedPref FileName
    private  val PREF_NAME: String? = "SharedPreferences"
    private val IS_LOGIN: String? = "is_login"


    val pref: SharedPreferences? = context?.getSharedPreferences(PREF_NAME, PRIVATE_MODE)
    val editor: SharedPreferences.Editor? = pref?.edit()

    fun setUsername(username: String?){
        editor?.putString("username", username)
        editor?.commit()
    }

    fun getUsername(): String?{
        return pref?.getString("username", "")
    }

}

1 Answers1

0

Please try this

  1. Java:

    Context context = mock(Context.class);

  2. Kotlin:

    mock(Context::class.java)

More detail

Nrohpos
  • 283
  • 2
  • 7