2016-03-27 8 views
0

Mit den JUnit4 Test-Runner, die Testläufen und scheint zu funktionieren, aber die Abfrage gibt keine Ergebnisse:Ausgabe mit Realm Unit Test auf 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)); 

} 

Ja ich am Beispiel Projekt gesucht, aber will nicht füge alle Abhängigkeiten hinzu und möchte, dass meine Tests lesbar sind, um so alle Mocks zu vermeiden.

+1

Sie haben in der Transaktion nicht an das Realm geschrieben. Versuchen Sie, 'realm.copyToRealm (location)' vor 'realm.commitTransaction()' hinzuzufügen. – beeender

+0

Warum hast du das nicht als Antwort eingegeben? Ich habe Realm in Swift benutzt, bin gerade zum Android gegangen und habe diese Anrufe nicht gesehen. Ich sah diese Methode, dachte aber, dass sie für das Resyncing mit der Sitzung gedacht war. Vielen Dank! – Rob

+0

Ja, füge die Antwort hinzu. Prost! – beeender

Antwort

1

Sie haben in der Transaktion nicht an das Realm geschrieben. Versuchen Sie, realm.copyToRealm(location) vor realm.commitTransaction() hinzuzufügen.

+0

Das hat es natürlich behoben. – Rob