wie kann ich verspotte Zusammenhang mit Mockito und Robolectric?
Dies ist ein Ausschnitt meiner Tätigkeit :
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();
}
}
Mit der obigen Zeile kommentiert, kann ich gerne erstellen und ausführen von unit-tests wie so :
@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"));
}
}
Jedoch, wenn ich die Auskommentierung der Zeile new InitialisationTask(this).execute();
in meine Tätigkeit, meine tests beginnen zu Versagen, wahrscheinlich, weil der Verweis auf this
.
Was ist der beste Ansatz für Spott Kontext?
Habe ich versucht, um contextMock = mock(Context.class);
in meine setUp()
aber ich bin nicht sicher, wie ich das einstellen kann das mock "in" die searchActivity
Dank
Kann man teilen-code Ihrer Aufgabe?
InformationsquelleAutor Jimmy | 2012-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für robolectric 3.0, um das Kontext-Objekt, das Sie benutzen Sie einfach:
In deinem code oben, Sie muss nicht explizit erstellen der activity-Objekt, und rufen Sie die onCreate () - Methode. Robolectric einrichten können für Sie Aktivitäten mit:
InformationsquelleAutor Kanishk
Für immer der Kontext der Aktivität oder Anwendung, die Sie verwenden können :
Beispiel :
Nun die Kontext-variable.
InformationsquelleAutor Virag Brahme
Ich bin mit Robolectric 3.2. Dies ist, was ich verwendet habe:
ShadowApplication.getInstance().getApplicationContext();
InformationsquelleAutor Keith Holliday