2016-03-27 7 views
0

Использование JUnit4 Test Runner, тестовые трассы и, кажется, работает, но запрос не возвращает результаты:Проблема с Realm Unit Test на Android

@RunWith(AndroidJUnit4::class) 
class LocationViewInstrumentationTest { 

@Rule 
public val mActivityRule: ActivityTestRule<MapsActivity> = ActivityTestRule(MapsActivity::class.java) 

@Rule 
var testFolder = TemporaryFolder() 


@Test 
fun mapViewIsRendered() { 
    onView(withId(R.id.map)).check(matches(isDisplayed())) 
} 

@Test 
@Throws(IOException::class) 
fun canSaveLocation() { 
    val tempFolder = testFolder.newFolder("realmdata") 
    val config = RealmConfiguration.Builder(tempFolder).build() 
    val realm = Realm.getInstance(config) 

    realm.beginTransaction() 
    val location = Location("Poppy Manor", 33.2, -121.3, 0.0) 

    assertThat(location, not(nullValue())) 

    realm.commitTransaction() 

    RealmQuery<Location> query = realm.where(Location.class); 
    RealmResults<Location> results = query.findAll(); 
    assertThat(results.size(), equalTo(1)); 

} 

Да, я посмотрел на примере проекта, но не хотят добавьте все зависимости и хотите, чтобы мои тесты были удобочитаемыми, поэтому старайтесь избегать всех издевательств.

+1

Вы не писали в Царство в транзакции. Попробуйте добавить 'realm.copyToRealm (location)' перед 'realm.commitTransaction()'. – beeender

+0

Почему вы не ответили на это? Я использовал Realm в Swift, просто перешел на андроид и не видел этих вызовов. Я видел этот метод, но думал, что это для повторной синхронизации с сеансом. Благодаря! – Rob

+0

Да, добавьте ответ. ура! – beeender

ответ

1

Вы не пишете в Царство в транзакции. Попробуйте добавить realm.copyToRealm(location) до realm.commitTransaction().

+0

Это, конечно, исправить. – Rob