diff --git a/build.gradle b/build.gradle index 71c377ba5..9fad8dd3b 100644 --- a/build.gradle +++ b/build.gradle @@ -59,7 +59,7 @@ android { minSdkVersion 21 targetSdkVersion 31 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "de.dennisguse.opentracks.TestRunner" testInstrumentationRunnerArguments clearPackageData: 'true' } signingConfigs { diff --git a/src/androidTest/java/de/dennisguse/opentracks/TestApplication.java b/src/androidTest/java/de/dennisguse/opentracks/TestApplication.java new file mode 100644 index 000000000..abd798b2e --- /dev/null +++ b/src/androidTest/java/de/dennisguse/opentracks/TestApplication.java @@ -0,0 +1,9 @@ +package de.dennisguse.opentracks; + +public class TestApplication extends Startup { + @Override + public String getDatabaseName() { + // null will make SQLiteOpenHelper create an in-memory database + return null; + } +} diff --git a/src/androidTest/java/de/dennisguse/opentracks/TestRunner.java b/src/androidTest/java/de/dennisguse/opentracks/TestRunner.java new file mode 100644 index 000000000..ee235f127 --- /dev/null +++ b/src/androidTest/java/de/dennisguse/opentracks/TestRunner.java @@ -0,0 +1,14 @@ +package de.dennisguse.opentracks; + +import android.app.Application; +import android.content.Context; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.runner.AndroidJUnitRunner; + +public class TestRunner extends AndroidJUnitRunner { + @Override + public Application newApplication(ClassLoader cl, String className, Context context) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + return super.newApplication(cl, TestApplication.class.getName(), context); + } +} diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 93a0706be..684dc8237 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -71,9 +71,6 @@ import de.dennisguse.opentracks.settings.PreferencesUtils; * Tests for the track recording service. * * @author Bartlomiej Niechwiej - *
- * //TODO ATTENTION: This tests deletes all stored tracks in the database. - * So, if it is executed on a real device, data might be lost. */ @RunWith(AndroidJUnit4.class) public class TrackRecordingServiceTest { diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java index 32e4a5fe9..be48cd6f0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java @@ -41,9 +41,6 @@ import static org.junit.Assert.assertFalse; /** * Tests insert location. - *
- * //TODO ATTENTION: This tests deletes all stored tracks in the database. - * So, if it is executed on a real device, data might be lost. */ @RunWith(AndroidJUnit4.class) //TODO Implement as mock test; no need to store data in database diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index 751b69105..008fb48b7 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -43,9 +43,6 @@ import static org.junit.Assert.assertTrue; * Tests for the track recording service, which require a {@link Looper}. * * @author Bartlomiej Niechwiej - *
- * ATTENTION: This tests deletes all stored tracks in the database. - * So, if it is executed on a real device, data might be lost. */ @RunWith(AndroidJUnit4.class) public class TrackRecordingServiceTestLooper { diff --git a/src/main/java/de/dennisguse/opentracks/AppConfig.java b/src/main/java/de/dennisguse/opentracks/AppConfig.java new file mode 100644 index 000000000..7d949425e --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/AppConfig.java @@ -0,0 +1,10 @@ +package de.dennisguse.opentracks; + +public interface AppConfig { + /** + * Returns the name of the database used by SQLiteOpenHelper. + * See {@link android.database.sqlite.SQLiteOpenHelper} for details. + * @return SQLite database name. + */ + String getDatabaseName(); +} diff --git a/src/main/java/de/dennisguse/opentracks/Startup.java b/src/main/java/de/dennisguse/opentracks/Startup.java index 5b55d5bfd..8b6b002da 100644 --- a/src/main/java/de/dennisguse/opentracks/Startup.java +++ b/src/main/java/de/dennisguse/opentracks/Startup.java @@ -14,7 +14,7 @@ import de.dennisguse.opentracks.settings.PreferencesUtils; * NOTE: How often actual application startup happens depends on the OS. * Not every start of an activity will trigger this. */ -public class Startup extends Application { +public class Startup extends Application implements AppConfig { private static final String TAG = Startup.class.getSimpleName(); @@ -40,4 +40,9 @@ public class Startup extends Application { StrictMode.enableDefaults(); } } + + @Override + public String getDatabaseName() { + return "database.db"; + } } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java b/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java index aee2b7549..76940f3e9 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java @@ -11,6 +11,7 @@ import androidx.annotation.VisibleForTesting; import java.util.UUID; +import de.dennisguse.opentracks.AppConfig; import de.dennisguse.opentracks.content.data.MarkerColumns; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.TrackPointsColumns; @@ -27,11 +28,8 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 31; - @VisibleForTesting - public static final String DATABASE_NAME = "database.db"; - public CustomSQLiteOpenHelper(Context context) { - this(context, DATABASE_NAME); + this(context, ((AppConfig) context.getApplicationContext()).getDatabaseName()); } @VisibleForTesting