From d552011b7ce4fe7efe7e7454c29117a0b74d5805 Mon Sep 17 00:00:00 2001 From: Jeremy Goldman Date: Tue, 23 Feb 2021 15:38:48 +0800 Subject: [PATCH] SerialNumberPreferenceControllerTest converted to JUnit The biggest difference is that an argumentcaptor is used for the ClipboardManager, rather than inspecting the primary clip. Diff: https://diff.googleplex.com/#key=X1WHfEzPhfuY Test: atest -c SerialNumberPreferenceControllerTest Change-Id: I84c2abd0d53dde22c90b0967f6884bc590181f7c --- .../SerialNumberPreferenceControllerTest.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) rename tests/{robotests => unit}/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java (57%) diff --git a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java similarity index 57% rename from tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java rename to tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java index 2106b54114d..eaf97d46c4e 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/hardwareinfo/SerialNumberPreferenceControllerTest.java @@ -16,39 +16,56 @@ package com.android.settings.deviceinfo.hardwareinfo; +import static android.content.Context.CLIPBOARD_SERVICE; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; + import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.os.Build; +import android.os.Looper; + +import androidx.test.annotation.UiThreadTest; +import androidx.test.core.app.ApplicationProvider; +import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; +import org.mockito.ArgumentCaptor; -@RunWith(RobolectricTestRunner.class) +@RunWith(AndroidJUnit4.class) public class SerialNumberPreferenceControllerTest { private Context mContext; private SerialNumberPreferenceController mController; + private ClipboardManager mClipboardManager; @Before public void setUp() { - mContext = RuntimeEnvironment.application; + if (Looper.myLooper() == null) { + Looper.prepare(); + } + mContext = spy(ApplicationProvider.getApplicationContext()); + mClipboardManager = (ClipboardManager) spy(mContext.getSystemService(CLIPBOARD_SERVICE)); + doReturn(mClipboardManager).when(mContext).getSystemService(CLIPBOARD_SERVICE); mController = new SerialNumberPreferenceController(mContext, "test"); } @Test + @UiThreadTest public void copy_shouldPutSerialNumberToClipBoard() { + ArgumentCaptor captor = ArgumentCaptor.forClass(ClipData.class); + doNothing().when(mClipboardManager).setPrimaryClip(captor.capture()); + mController.copy(); - final ClipboardManager clipboardManager = mContext.getSystemService(ClipboardManager.class); - final ClipData data = clipboardManager.getPrimaryClip(); - + final ClipData data = captor.getValue(); assertThat(data.getItemAt(0).getText().toString()).contains(Build.getSerial()); } }