0

Ich habe Room Persistence Library gelesen. Ich kloniere auch android-architecture-components dann versuche ich Mirgration Test hinzuzufügen. Allerdings kann ich nicht importierenKann android.arch.persistence.room.testing.MigrationTestHelper nicht importieren

import android.arch.persistence.room.testing.MigrationTestHelper; 

Ich verwende auch die neueste lib-Version, die ist. Hier

android.arch.core:core-testing:1.0.0-alpha3 

ist der Code für MigrationTest

import android.arch.persistence.db.SupportSQLiteDatabase; 
import android.arch.persistence.db.framework.FrameworkSQLiteOpenHelperFactory; 
import android.support.test.InstrumentationRegistry; 
import android.support.test.runner.AndroidJUnit4; 

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import java.io.IOException; 
import android.arch.persistence.room.testing.MigrationTestHelper; 

@RunWith(AndroidJUnit4.class) 
public class MigrationTest { 
    private static final String TEST_DB = "migration-test"; 

    @Rule 
    public MigrationTestHelper helper; 

    public MigrationTest() { 
     helper = new MigrationTestHelper(InstrumentationRegistry.getInstrumentation(), 
       MigrationDb.class.getCanonicalName(), 
       new FrameworkSQLiteOpenHelperFactory()); 
    } 

    @Test 
    public void migrate1To2() throws IOException { 
     SupportSQLiteDatabase db = helper.createDatabase(TEST_DB, 1); 

     // db has schema version 1. insert some data using SQL queries. 
     // You cannot use DAO classes because they expect the latest schema. 
     //db.execSQL(...); 

     // Prepare for the next version. 
     db.close(); 

     // Re-open the database with version 2 and provide 
     // MIGRATION_1_2 as the migration process. 
     db = helper.runMigrationsAndValidate(TEST_DB, 2, true, MIGRATION_1_2); 

     // MigrationTestHelper automatically verifies the schema changes, 
     // but you need to validate that the data was migrated properly. 
    } 
} 

Antwort

1

Sie verwenden Android Läufer (AndroidJUnit4.class), und die Prüfung wird actualy bei src/androidTest platziert. Es heißt, Sie verwenden Instrumented Tests die Abhängigkeiten deklariert werden sollte:

// Instrumented Unit Test or UI Test 
androidTestComplile .... 

Inzwischen, wenn Sie Local Unit Test schreiben, Codes Testen bei src/test platziert ist, können Sie die Abhängigkeiten deklarieren:

// Local Unit Test 
testCompile .... 

In Google-Dokumentation Sie geben nur ein Beispiel für lokale Unit-Tests. Kein Fehler hier.

+0

Danke. Können wir diesen Code als lokalen Einheitstest auf dem Host-Computer ausführen? – UmAnusorn

+0

Kann es mit testCompile .. auf lokalen Einheitstest laufen? – UmAnusorn

+0

Ich denke, es ist ein Fehler, da ihre Beispielcode AndroidJUnit4 verwenden – UmAnusorn