add WorkManagerTestRule to CleanCacheWorkerTest

This commit is contained in:
Hans-Christoph Steiner 2021-01-06 16:11:57 +01:00
parent 2e10c7ba03
commit 06dbd048af
2 changed files with 36 additions and 15 deletions

View File

@ -1,25 +1,48 @@
package org.fdroid.fdroid; package org.fdroid.fdroid.work;
import android.app.Instrumentation; import android.app.Instrumentation;
import androidx.arch.core.executor.testing.InstantTaskExecutorRule;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.LargeTest;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkInfo;
import com.google.common.util.concurrent.ListenableFuture;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.fdroid.fdroid.compat.FileCompatTest; import org.fdroid.fdroid.compat.FileCompatTest;
import org.fdroid.fdroid.work.CleanCacheWorker; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.ExecutionException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@RunWith(AndroidJUnit4.class) /**
* This test cannot run on Robolectric unfortunately since it does not support
* <p>
* This is marked with {@link LargeTest} because it always fails on the emulator
* tests on GitLab CI. That excludes it from the test run there.
*/
@LargeTest
public class CleanCacheWorkerTest { public class CleanCacheWorkerTest {
public static final String TAG = "CleanCacheWorkerTest"; public static final String TAG = "CleanCacheWorkerEmulatorTest";
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule();
@Rule
public WorkManagerTestRule workManagerTestRule = new WorkManagerTestRule();
@Test
public void testWorkRequest() throws ExecutionException, InterruptedException {
OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(CleanCacheWorker.class).build();
workManagerTestRule.workManager.enqueue(request).getResult();
ListenableFuture<WorkInfo> workInfo = workManagerTestRule.workManager.getWorkInfoById(request.getId());
assertEquals(WorkInfo.State.SUCCEEDED, workInfo.get().getState());
}
@Test @Test
public void testClearOldFiles() throws IOException, InterruptedException { public void testClearOldFiles() throws IOException, InterruptedException {

View File

@ -1,23 +1,21 @@
package org.fdroid.fdroid; package org.fdroid.fdroid.work;
import android.app.Instrumentation; import android.app.Instrumentation;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import androidx.work.Configuration; import androidx.work.Configuration;
import androidx.work.WorkManager; import androidx.work.WorkManager;
import androidx.work.testing.SynchronousExecutor; import androidx.work.testing.SynchronousExecutor;
import androidx.work.testing.WorkManagerTestInitHelper; import androidx.work.testing.WorkManagerTestInitHelper;
import org.junit.rules.TestWatcher; import org.junit.rules.TestWatcher;
import org.junit.runner.Description; import org.junit.runner.Description;
public class WorkManagerTestRule extends TestWatcher { public class WorkManagerTestRule extends TestWatcher {
private Context targetContext; Context targetContext;
private Context testContext; Context testContext;
private Configuration configuration; Configuration configuration;
private WorkManager workManager; WorkManager workManager;
@Override @Override
protected void starting(Description description) { protected void starting(Description description) {