Android单元测试领域

时间:2017-11-14 09:56:50

标签: android unit-testing realm

我找不到在Android上进行单元测试的解决方案。我正在尝试测试Realm与服务的交互。 我尝试使用PowerMockito和内存解决方案,但在每种情况下它都不适合我。

我正在寻找一种解决方案来检查存储在领域中的数据。有人可以给我一个资源或提示吗?

编辑:我的inMemory示例代码

的build.gradle

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
...
dependencies {
  androidTestImplementation 'com.android.support:support-annotations:26.1.0'
  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test:rules:1.0.1'
}

同步服务

@RunWith(AndroidJUnit4::class)
class StateSyncServiceTest {

    lateinit var mockRealm: Realm

    @Before
    fun setup() {
        val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build()
        mockRealm = Realm.getInstance(testConfig)
    }

    @Test
    fun shouldBeAbleToGetDefaultInstance() {
        Assert.assertThat(Realm.getDefaultInstance(), `is`(mockRealm)) //NOT WORKING WRONG OBJECT
    }

    @Test
    fun correctSynchronizationPerformed() {
        //given
        val organizationsDTO = listOf<OrganizationDTO>(OrganizationDTO(3, "Organization Mauritius", true))
        val statesDTO = listOf<StateDTO>(StateDTO(2, 3, false, "State 2"), StateDTO(3, 3, false, "State 3"))
        val stateDAO = StateDAO()
        val stateSynchroService = StateSyncService()

        //when
        stateSynchroService.synchronize(statesDTO, organizationsDTO)

        //then
        val resultRealm = stateDAO.findAll()
        Assert.assertEquals(statesDTO.size, resultRealm?.size) //WRONG DATA, MIX PRODUCTION AND TEST
    }
}

此外,数据不会从仿真器中删除。执行后我仍然可以使用混合数据获取领域db文件。

1 个答案:

答案 0 :(得分:0)

好的,在@Sarthak Mittal的帮助下找到了它。 初始部分无法正常工作。

@Before
fun setup() {
    val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build()
    Realm.setDefaultConfiguration(testConfig)
    mockRealm = Realm.getDefaultInstance()
}

@After
@Throws(Exception::class)
public override fun tearDown() {
    mockRealm.close()
}