7

これは私の活動のスニペットです:

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();
    }
}

上記の行にコメントを付けると、次のように単体テストを喜んで作成して実行できます。

@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"));
    }
}

ただし、アクティビティの行のコメントを外すnew InitialisationTask(this).execute();と、テストが失敗し始めます。これは、おそらく への参照が原因ですthis

コンテキストをモックするための最良のアプローチは何ですか?

contextMock = mock(Context.class);私は自分に追加しようとしましたが、setUp()このモックを「に」設定する方法がわかりませんsearchActivity

ありがとう

4

3 に答える 3

3

Robolectric 3.2 を使用しています。これは私が使用したものです:

ShadowApplication.getInstance().getApplicationContext();

于 2016-07-17T03:06:58.357 に答える