diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index a3c2535..74bddda 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -74,12 +74,12 @@
 
     private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
     private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
+    private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
     private static final String TEST_EMERGENCY_ADDRESS_CARRIER_APP =
             "com.android.settings/.wifi.calling.TestEmergencyAddressCarrierApp";
 
     private TestFragment mFragment;
     private Context mContext;
-    private TextView mEmptyView;
     private final PersistableBundle mBundle = new PersistableBundle();
 
     private MockWifiCallingQueryImsState mQueryImsState;
@@ -100,6 +100,8 @@
     @Mock
     private View mView;
     @Mock
+    private LinkifyDescriptionPreference mDescriptionView;
+    @Mock
     private ListWithEntrySummaryPreference mButtonWfcMode;
     @Mock
     private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
@@ -126,12 +128,10 @@
         doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any());
         doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE);
         doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE);
+        doReturn(mDescriptionView).when(mFragment).findPreference(PREFERENCE_NO_OPTIONS_DESC);
         doNothing().when(mFragment).finish();
         doReturn(mView).when(mFragment).getView();
 
-        mEmptyView = new TextView(mContext);
-        doReturn(mEmptyView).when(mView).findViewById(android.R.id.empty);
-
         mSwitchBar = new SettingsMainSwitchBar(mContext);
         doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
 
@@ -211,8 +211,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is shown.
-        verify(mPreferenceScreen, times(1)).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, never()).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(true);
     }
 
     @Test
@@ -225,8 +224,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -239,8 +237,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -253,8 +250,7 @@
         mFragment.onResume();
 
         // Check that WFC roaming preference is hidden.
-        verify(mPreferenceScreen, never()).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen, times(1)).removePreference(mButtonWfcRoamingMode);
+        verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
     }
 
     @Test
@@ -332,9 +328,9 @@
                 Activity.RESULT_OK, null);
 
         // Check the WFC preferences is added.
-        verify(mPreferenceScreen).addPreference(mButtonWfcMode);
-        verify(mPreferenceScreen).addPreference(mButtonWfcRoamingMode);
-        verify(mPreferenceScreen).addPreference(mUpdateAddress);
+        verify(mButtonWfcMode).setVisible(true);
+        verify(mButtonWfcRoamingMode).setVisible(true);
+        verify(mUpdateAddress).setVisible(true);
         // Check the WFC enable request.
         verify(mImsMmTelManager).setVoWiFiSettingEnabled(true);
     }
