Use androidx.test artifacts for tests not just androidTests

- this allows replacing deprecated RuntimeEnvironment.application
This commit is contained in:
Dominik Schürmann 2020-07-01 21:29:18 +02:00
parent 360e61118d
commit 8f81bf0cb9
14 changed files with 63 additions and 51 deletions

View File

@ -169,21 +169,18 @@ dependencies {
fullImplementation 'org.nanohttpd:nanohttpd:2.3.1' fullImplementation 'org.nanohttpd:nanohttpd:2.3.1'
testImplementation 'org.robolectric:robolectric:4.3' testImplementation 'org.robolectric:robolectric:4.3'
testImplementation 'androidx.test:monitor:1.1.1' testImplementation 'junit:junit:4.12'
testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60' testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60'
testImplementation 'junit:junit:4.13'
testImplementation 'org.hamcrest:hamcrest:2.2'
testImplementation 'org.mockito:mockito-core:2.7.22' testImplementation 'org.mockito:mockito-core:2.7.22'
testImplementation 'androidx.test:core:1.2.0'
androidTestImplementation 'androidx.test:core:1.2.0' testImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0' testImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0' testImplementation 'androidx.test:monitor:1.2.0'
testImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
} }
checkstyle { checkstyle {

View File

@ -21,6 +21,8 @@ package org.fdroid.fdroid;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.test.core.app.ApplicationProvider;
import android.util.Log; import android.util.Log;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -39,7 +41,7 @@ import static org.junit.Assert.assertTrue;
public class PreferencesTest { public class PreferencesTest {
private static final String TAG = "PreferencesTest"; private static final String TAG = "PreferencesTest";
private static final Context CONTEXT = RuntimeEnvironment.application; private static final Context CONTEXT = ApplicationProvider.getApplicationContext();
private SharedPreferences defaults; private SharedPreferences defaults;

View File

@ -8,6 +8,8 @@ import android.content.ContextWrapper;
import android.content.pm.ProviderInfo; import android.content.pm.ProviderInfo;
import android.net.Uri; import android.net.Uri;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.ApkProvider; import org.fdroid.fdroid.data.ApkProvider;
import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.App;
@ -158,7 +160,7 @@ public class TestUtils {
*/ */
public static ContextWrapper createContextWithContentResolver(ContentResolver contentResolver) { public static ContextWrapper createContextWithContentResolver(ContentResolver contentResolver) {
final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver)); final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver));
return new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) { return new ContextWrapper(ApplicationProvider.getApplicationContext()) {
@Override @Override
public ContentResolver getContentResolver() { public ContentResolver getContentResolver() {
return resolver; return resolver;

View File

@ -2,6 +2,9 @@
package org.fdroid.fdroid; package org.fdroid.fdroid;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.views.AppDetailsRecyclerViewAdapter; import org.fdroid.fdroid.views.AppDetailsRecyclerViewAdapter;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@ -85,7 +88,7 @@ public class UtilsTest {
@Test @Test
public void testFormatFingerprint() { public void testFormatFingerprint() {
Context context = RuntimeEnvironment.application; Context context = ApplicationProvider.getApplicationContext();
String badResult = Utils.formatFingerprint(context, ""); String badResult = Utils.formatFingerprint(context, "");
// real fingerprints // real fingerprints
String formatted; String formatted;

View File

@ -1,10 +1,11 @@
package org.fdroid.fdroid.data; package org.fdroid.fdroid.data;
import android.content.Context; import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import androidx.test.core.app.ApplicationProvider;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.TestUtils;
@ -12,7 +13,6 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
import java.io.File; import java.io.File;
@ -47,7 +47,7 @@ public class DBHelperTest {
@Before @Before
public final void setupBase() { public final void setupBase() {
context = RuntimeEnvironment.application.getApplicationContext(); context = ApplicationProvider.getApplicationContext();
} }
@Test @Test

View File

@ -7,6 +7,9 @@ import android.content.Context;
import android.content.ContextWrapper; import android.content.ContextWrapper;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteOpenHelper;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.TestUtils;
@ -29,7 +32,7 @@ public class DatabaseMigration {
@Before @Before
public final void setupBase() { public final void setupBase() {
contentResolver = RuntimeEnvironment.application.getContentResolver(); contentResolver = ApplicationProvider.getApplicationContext().getContentResolver();
context = TestUtils.createContextWithContentResolver(contentResolver); context = TestUtils.createContextWithContentResolver(contentResolver);
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
} }

View File

@ -3,12 +3,12 @@ package org.fdroid.fdroid.data;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.ContextWrapper; import android.content.ContextWrapper;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.TestUtils;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowContentResolver;
public abstract class FDroidProviderTest { // NOPMD This abstract class does not have any abstract methods public abstract class FDroidProviderTest { // NOPMD This abstract class does not have any abstract methods
@ -17,7 +17,7 @@ public abstract class FDroidProviderTest { // NOPMD This abstract class does not
@Before @Before
public final void setupBase() { public final void setupBase() {
contentResolver = RuntimeEnvironment.application.getContentResolver(); contentResolver = ApplicationProvider.getApplicationContext().getContentResolver();
context = TestUtils.createContextWithContentResolver(contentResolver); context = TestUtils.createContextWithContentResolver(contentResolver);
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
} }

View File

@ -4,7 +4,9 @@ import android.app.Application;
import android.content.ContentValues; import android.content.ContentValues;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import org.fdroid.fdroid.BuildConfig;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.TestUtils;
import org.fdroid.fdroid.data.Schema.InstalledAppTable.Cols; import org.fdroid.fdroid.data.Schema.InstalledAppTable.Cols;
@ -12,7 +14,6 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import java.util.Map; import java.util.Map;
@ -36,7 +37,7 @@ public class InstalledAppProviderTest extends FDroidProviderTest {
@Test @Test
public void insertSingleApp() { public void insertSingleApp() {
Map<String, Long> foundBefore = InstalledAppProvider.Helper.lastUpdateTimes(RuntimeEnvironment.application); Map<String, Long> foundBefore = InstalledAppProvider.Helper.lastUpdateTimes(ApplicationProvider.getApplicationContext());
assertEquals(foundBefore.size(), 0); assertEquals(foundBefore.size(), 0);
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
@ -50,7 +51,7 @@ public class InstalledAppProviderTest extends FDroidProviderTest {
values.put(Cols.SIGNATURE, "000111222333444555666777888999aaabbbcccdddeeefff"); values.put(Cols.SIGNATURE, "000111222333444555666777888999aaabbbcccdddeeefff");
contentResolver.insert(InstalledAppProvider.getContentUri(), values); contentResolver.insert(InstalledAppProvider.getContentUri(), values);
Map<String, Long> foundAfter = InstalledAppProvider.Helper.lastUpdateTimes(RuntimeEnvironment.application); Map<String, Long> foundAfter = InstalledAppProvider.Helper.lastUpdateTimes(ApplicationProvider.getApplicationContext());
assertEquals(1, foundAfter.size()); assertEquals(1, foundAfter.size());
assertEquals(100000000L, foundAfter.get("org.example.test-app").longValue()); assertEquals(100000000L, foundAfter.get("org.example.test-app").longValue());

View File

@ -1,12 +1,9 @@
package org.fdroid.fdroid.data; package org.fdroid.fdroid.data;
import static org.fdroid.fdroid.Assert.assertInvalidUri;
import static org.fdroid.fdroid.Assert.assertValidUri;
import android.content.ContentResolver; import android.content.ContentResolver;
import java.util.ArrayList;
import java.util.List; import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.TestUtils;
import org.fdroid.fdroid.data.Schema.InstalledAppTable; import org.fdroid.fdroid.data.Schema.InstalledAppTable;
import org.fdroid.fdroid.mock.MockApk; import org.fdroid.fdroid.mock.MockApk;
@ -15,10 +12,12 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows; import java.util.ArrayList;
import org.robolectric.annotation.Config; import java.util.List;
import org.robolectric.shadows.ShadowContentResolver;
import static org.fdroid.fdroid.Assert.assertInvalidUri;
import static org.fdroid.fdroid.Assert.assertValidUri;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
@ -33,7 +32,7 @@ public class ProviderUriTests {
@Before @Before
public void setup() { public void setup() {
resolver = RuntimeEnvironment.application.getContentResolver(); resolver = ApplicationProvider.getApplicationContext().getContentResolver();
} }
@After @After

View File

@ -8,6 +8,7 @@ import android.view.ViewGroup;
import androidx.appcompat.view.ContextThemeWrapper; import androidx.appcompat.view.ContextThemeWrapper;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.test.core.app.ApplicationProvider;
import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
@ -27,7 +28,6 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@ -48,7 +48,7 @@ public class AppDetailsAdapterTest extends FDroidProviderTest {
app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App", app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App",
new ContentValues(), repo.getId()); new ContentValues(), repo.getId());
themeContext = new ContextThemeWrapper(RuntimeEnvironment.application, R.style.AppBaseThemeDark); themeContext = new ContextThemeWrapper(ApplicationProvider.getApplicationContext(), R.style.AppBaseThemeDark);
} }
@After @After

View File

@ -1,12 +1,14 @@
package org.fdroid.fdroid.nearby; package org.fdroid.fdroid.nearby;
import android.content.Context; import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowLog; import org.robolectric.shadows.ShadowLog;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
@ -23,7 +25,7 @@ public class LocalHTTPDManagerTest {
@Test @Test
public void testStartStop() throws InterruptedException { public void testStartStop() throws InterruptedException {
ShadowLog.stream = System.out; ShadowLog.stream = System.out;
Context context = RuntimeEnvironment.application; Context context = ApplicationProvider.getApplicationContext();
final String host = "localhost"; final String host = "localhost";
final int port = 8888; final int port = 8888;

View File

@ -35,6 +35,9 @@ package org.fdroid.fdroid.nearby;
import android.content.Context; import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.test.core.app.ApplicationProvider;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
@ -45,7 +48,6 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowLog; import org.robolectric.shadows.ShadowLog;
import java.io.File; import java.io.File;
@ -88,7 +90,7 @@ public class LocalHTTPDTest {
assertFalse(Utils.isServerSocketInUse(port)); assertFalse(Utils.isServerSocketInUse(port));
final Context context = RuntimeEnvironment.application.getApplicationContext(); final Context context = ApplicationProvider.getApplicationContext();
webRoot = context.getFilesDir(); webRoot = context.getFilesDir();
FileUtils.deleteDirectory(webRoot); FileUtils.deleteDirectory(webRoot);
assertTrue(webRoot.mkdir()); assertTrue(webRoot.mkdir());
@ -266,7 +268,7 @@ public class LocalHTTPDTest {
@Override @Override
public void run() { public void run() {
LocalHTTPD localHttpd = new LocalHTTPD( LocalHTTPD localHttpd = new LocalHTTPD(
RuntimeEnvironment.application, ApplicationProvider.getApplicationContext(),
"localhost", "localhost",
testPort, testPort,
webRoot, webRoot,

View File

@ -2,13 +2,15 @@ package org.fdroid.fdroid.nearby;
import android.content.Context; import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.test.core.app.ApplicationProvider;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.fdroid.fdroid.IndexUpdater; import org.fdroid.fdroid.IndexUpdater;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.File; import java.io.File;
@ -29,7 +31,7 @@ public class LocalRepoKeyStoreTest {
@Test @Test
public void testSignZip() throws IOException, LocalRepoKeyStore.InitException, IndexUpdater.SigningException { public void testSignZip() throws IOException, LocalRepoKeyStore.InitException, IndexUpdater.SigningException {
Context context = RuntimeEnvironment.application; Context context = ApplicationProvider.getApplicationContext();
File xmlIndexJarUnsigned = File.createTempFile(getClass().getName(), "unsigned.jar"); File xmlIndexJarUnsigned = File.createTempFile(getClass().getName(), "unsigned.jar");
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(xmlIndexJarUnsigned)); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(xmlIndexJarUnsigned));

View File

@ -7,6 +7,9 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.test.core.app.ApplicationProvider;
import org.apache.commons.net.util.SubnetUtils; import org.apache.commons.net.util.SubnetUtils;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Hasher; import org.fdroid.fdroid.Hasher;
@ -23,23 +26,19 @@ import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.data.Schema; import org.fdroid.fdroid.data.Schema;
import org.fdroid.fdroid.data.ShadowApp; import org.fdroid.fdroid.data.ShadowApp;
import org.fdroid.fdroid.data.TempAppProvider; import org.fdroid.fdroid.data.TempAppProvider;
import org.fdroid.fdroid.nearby.LocalHTTPD;
import org.fdroid.fdroid.nearby.LocalRepoKeyStore; import org.fdroid.fdroid.nearby.LocalRepoKeyStore;
import org.fdroid.fdroid.nearby.LocalRepoManager; import org.fdroid.fdroid.nearby.LocalRepoManager;
import org.fdroid.fdroid.nearby.LocalRepoService; import org.fdroid.fdroid.nearby.LocalRepoService;
import org.fdroid.fdroid.nearby.WifiStateChangeService; import org.fdroid.fdroid.nearby.WifiStateChangeService;
import org.fdroid.fdroid.nearby.LocalHTTPD;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowContentResolver;
import org.robolectric.shadows.ShadowLog; import org.robolectric.shadows.ShadowLog;
import org.robolectric.shadows.ShadowPackageManager;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -72,9 +71,9 @@ public class SwapRepoTest {
public void setUp() { public void setUp() {
ShadowLog.stream = System.out; ShadowLog.stream = System.out;
contentResolver = RuntimeEnvironment.application.getContentResolver(); contentResolver = ApplicationProvider.getApplicationContext().getContentResolver();
context = new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) { context = new ContextWrapper(ApplicationProvider.getApplicationContext()) {
@Override @Override
public ContentResolver getContentResolver() { public ContentResolver getContentResolver() {
return contentResolver; return contentResolver;