我找不到在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文件。
答案 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()
}