Browse Source

add robolectric for testing without AVD

MrOzOn 4 năm trước cách đây
mục cha
commit
60424a9836

+ 6 - 2
app/build.gradle

@@ -31,6 +31,11 @@ android {
     kotlinOptions {
         jvmTarget = '1.8'
     }
+    testOptions {
+        unitTests {
+            includeAndroidResources = true
+        }
+    }
 }
 
 dependencies {
@@ -59,10 +64,9 @@ dependencies {
     testImplementation 'junit:junit:4.13.2'
     testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
     testImplementation "androidx.arch.core:core-testing:2.1.0"
-    androidTestImplementation "androidx.arch.core:core-testing:2.1.0"
     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
-    //testing network
+    testImplementation 'org.robolectric:robolectric:4.4'
     testImplementation 'org.mockito:mockito-core:2.19.0'
     testImplementation "com.squareup.retrofit2:retrofit-mock:$retrofit_version"
 }

+ 12 - 5
app/src/androidTest/java/com/mrozon/currencyconverter/data/db/CurrencyDaoTest.kt → app/src/test/java/com/mrozon/currencyconverter/data/db/CurrencyDaoTest.kt

@@ -1,16 +1,21 @@
 package com.mrozon.currencyconverter.data.db
 
 import androidx.arch.core.executor.testing.InstantTaskExecutorRule
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import org.junit.runner.RunWith
 import androidx.room.Room
 import androidx.test.platform.app.InstrumentationRegistry
 import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.runBlocking
-import org.junit.*
+import org.junit.After
 import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
 
-@RunWith(AndroidJUnit4::class)
+@RunWith(RobolectricTestRunner::class)
+@Config(sdk = [29])
 class CurrencyDaoTest {
     private lateinit var database: CurrencyDatabase
     private lateinit var dao: CurrencyDao
@@ -25,7 +30,9 @@ class CurrencyDaoTest {
     @Before
     fun createDb() = runBlocking {
         val context = InstrumentationRegistry.getInstrumentation().targetContext
-        database = Room.inMemoryDatabaseBuilder(context, CurrencyDatabase::class.java).build()
+        database = Room.inMemoryDatabaseBuilder(context, CurrencyDatabase::class.java)
+            .allowMainThreadQueries()
+            .build()
         dao = database.currencyDao()
         dao.insertAll(listOf(valute1, valute2, valute3))
     }