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