Questo è un frammento della mia attività:Come posso prendere in giro il Contesto usando Mockito e Robolectric?
public class Search extends Activity
{
private String TAG = "SEARCH";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
Log.d(TAG, "About to call initialastion");
// new InitialisationTask(this).execute();
}
}
Con la linea di cui sopra commentata, posso felicemente creare ed eseguire unit test in questo modo:
@RunWith(RobolectricTestRunner.class)
public class SearchTest {
private Search searchActivity;
private Button searchButton;
private Button clearButton;
private Button loginButton;
private Button registerButton;
private EditText searchEditText;
@Before
public void setUp() throws Exception {
searchActivity = new Search();
searchActivity.onCreate(null);
searchButton = (Button) searchActivity.findViewById(R.id.btnPlateSearch);
clearButton = (Button) searchActivity.findViewById(R.id.btnClearSearch);
loginButton = (Button) searchActivity.findViewById(R.id.btnLogin);
registerButton = (Button) searchActivity.findViewById(R.id.btnRegister);
searchEditText = (EditText) searchActivity.findViewById(R.id.editTextInputPlate);
}
@Test
public void assertSearchButtonHasCorrectLabel()
{
assertThat((String) searchButton.getText(), equalTo("Search"));
}
}
Tuttavia, se il commento dalla riga new InitialisationTask(this).execute();
in la mia attività, i miei test iniziano a fallire, molto probabilmente a causa del riferimento a this
.
Qual è l'approccio migliore per deridere il contesto?
ho provato ad aggiungere contextMock = mock(Context.class);
nel mio setUp()
però io non sono sicuro di come posso impostare questa finta "in" i searchActivity
Grazie
Puoi condividere il codice del vostro compito? –