samedi 15 février 2020

How do I fix this null pointer exception on my Junit Tests

     This is the stacktrace    
     java.lang.NullPointerException
        at android.content.ContextWrapper.getSystemService(ContextWrapper.java:416)
        at androidx.room.RoomDatabase$JournalMode.resolve(RoomDatabase.java:517)
        at androidx.room.RoomDatabase$Builder.build(RoomDatabase.java:943)
        at com.example.movie_app.model.database.MovieDB$Companion.getDatabase(MovieDB.kt:26)
        at com.example.movie_app.repository.FavouriteRepository.<init>(FavouriteRepository.kt:22)
        at 
      com.example.movie_app.repository.FavouriteRepositoryTest.setUp(FavouriteRepositoryTest.kt:38)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
        at 

org.robolectric.RobolectricTestRunner$HelperTestRunner$1.evaluate(RobolectricTestRunner.java:546) at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:252) at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

    This is my code
    The error seems to be pointing towards my Database and repository

    @RunWith(RobolectricTestRunner::class)
    @Config(manifest = Config.NONE)
    class FavouriteRepositoryTest {

        @Mock
        private lateinit var context: Context
        private lateinit var favouriteRepository: FavouriteRepository
        private lateinit var db: MovieDB
        private lateinit var movieDao: MovieDao
        lateinit var application: Application

        @Before
        fun setUp() {
            MockitoAnnotations.initMocks(this)
            db = Room.databaseBuilder(context, 
  MovieDB::class.java,"data").allowMainThreadQueries().build()
            movieDao = db.MovieDao()
            application = Application()
            favouriteRepository = FavouriteRepository(application)
        }

        @Test
        fun getFavouriteMessages() {
        }

        @Test
        fun insertFavourite() {

            runBlocking {
                favouriteRepository.insertFavourite(TestUtil.getFakeMovie())
                val favMovies = favouriteRepository.getFavouriteMessages()
                assertEquals(favMovies.value!!.isNotEmpty(),true)

    //            assert(favMovies.value.isNullOrEmpty())
            }
        }

        @Test
        fun deleteFavourite() {
        }
    }

Aucun commentaire:

Enregistrer un commentaire