2016-07-28 27 views
1

Ich versuche, eine LOCAL JUNIT Test-Klasse für meine Datenbank-Klasse in Android zu erstellen. Allerdings habe ich ein paar Probleme. Dies ist ein Beispiel für die Testklasse I erstellen möchten:Junit Testklasse in Android Studio

import android.test.AndroidTestCase; 
import android.test.RenamingDelegatingContext; 
import com.example.c.readit.model.Book; 
import com.example.c.readit.model.VolumeInfo; 
import com.example.c.readit.sqlite.SqliteHelper; 
import org.junit.Test; 

public class TestDB extends AndroidTestCase{ 
    private SqliteHelper db; 
@Override 
public void setUp() throws Exception { 
    super.setUp(); 
    RenamingDelegatingContext context = new RenamingDelegatingContext(getContext(), "test_"); 
    db = new SqliteHelper(context); 
} 

@Override 
public void tearDown() throws Exception { 
    db.close(); 
    super.tearDown(); 
} 

@Test 
public void testSaveBook(){ 

    String test_ID = "1234"; 
    String test_TITLE = "TestBook"; 
    String test_DESCRIPTION = "TestDescription"; 
    String test_PUBLISHER = "TestPublisher"; 
    String test_READ = "yes"; 

    VolumeInfo testVolumeInfo = new VolumeInfo(test_TITLE,test_PUBLISHER,test_DESCRIPTION); 
    Book testBook = new Book(test_ID,testVolumeInfo,test_READ); 

    long wasSuccesful = db.saveBookMyBooks(testBook); 

    assertTrue(wasSuccesful != -1); 
} 

}

jedoch ein paar der Methoden sind veraltet (seit API 24). Beim Nachschlagen in der Android-Dokumentation kann ich sehen, dass wir die 'Testing Support Library' (https://developer.android.com/topic/libraries/testing-support-library/index.html) verwenden sollen.

Ich habe es schwer, Beispiele zu finden, um zu lernen, wie man damit arbeitet. Wenn ich ein funktionierendes Beispiel, finde, renne ich in das Problem, dass ich den Kontext für meine SqlLite DB nicht erhalten kann. Wie kann ich den Kontext bekommen Einige Beispiele sind für die instrumentierten Testklassen verfügbar, aber ich möchte ein schreiben lokale JUNIT Test-Klasse.

Mein gradle Baujahr:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.0" 

    defaultConfig { 
     applicationId "com.example.c.readit" 
     minSdkVersion 14 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    configurations.all { 
     // To fix 'Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (24.0.0) and test app (23.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.' 
     resolutionStrategy.force 'com.android.support:support-annotations:23.0.1' 
    } 

    testOptions { 
     unitTests.returnDefaultValues = true 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.0.0' 
    compile 'com.android.support:design:24.0.0' 
    compile 'com.google.code.gson:gson:2.6.2' 
    compile 'com.squareup.retrofit2:retrofit:2.1.0' 
    compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1' 
    compile 'com.android.support:recyclerview-v7:24.0.0' 
    androidTestCompile 'com.android.support.test:runner:0.4' 
    // Set this dependency to use JUnit 4 rules 
    androidTestCompile 'com.android.support.test:rules:0.4' 
} 

Dank

Antwort

0

Context context = InstrumentationRegistry.getTargetContext();