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
This commit is contained in:
Jeremy Goldman
2021-02-23 15:38:48 +08:00
parent fb00d1c5b3
commit d552011b7c

View File

@@ -16,39 +16,56 @@
package com.android.settings.deviceinfo.hardwareinfo; package com.android.settings.deviceinfo.hardwareinfo;
import static android.content.Context.CLIPBOARD_SERVICE;
import static com.google.common.truth.Truth.assertThat; 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.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.os.Build; 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.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.mockito.ArgumentCaptor;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(AndroidJUnit4.class)
public class SerialNumberPreferenceControllerTest { public class SerialNumberPreferenceControllerTest {
private Context mContext; private Context mContext;
private SerialNumberPreferenceController mController; private SerialNumberPreferenceController mController;
private ClipboardManager mClipboardManager;
@Before @Before
public void setUp() { 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"); mController = new SerialNumberPreferenceController(mContext, "test");
} }
@Test @Test
@UiThreadTest
public void copy_shouldPutSerialNumberToClipBoard() { public void copy_shouldPutSerialNumberToClipBoard() {
ArgumentCaptor<ClipData> captor = ArgumentCaptor.forClass(ClipData.class);
doNothing().when(mClipboardManager).setPrimaryClip(captor.capture());
mController.copy(); mController.copy();
final ClipboardManager clipboardManager = mContext.getSystemService(ClipboardManager.class); final ClipData data = captor.getValue();
final ClipData data = clipboardManager.getPrimaryClip();
assertThat(data.getItemAt(0).getText().toString()).contains(Build.getSerial()); assertThat(data.getItemAt(0).getText().toString()).contains(Build.getSerial());
} }
} }