Как использовать намерение при тестировании классов Android? - PullRequest
3 голосов
/ 24 июня 2011

Вот пример кода, кажется, что он не работает для меня.

public class CropImageTest extends ActivityInstrumentationTestCase2<CropImage> {

    private Instrumentation mInstrumentation;
    private CropImage mActivity;
    private String filename = "/mnt/sdcard/DCIM/Camera/2011-05-12 09.22.56.jpg";
    private int aspectX = 1;
    private int aspectY = 1;
    private boolean scale = true;

    public CropImageTest() {
        super("hk.com.novare.android.cropimage", CropImage.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        this.mInstrumentation = getInstrumentation();
        Intent i = new Intent(mInstrumentation.getContext(), CropImage.class);

        i.putExtra("image-path", filename);
        i.putExtra("aspectY", aspectY);
        i.putExtra("aspectX", aspectX);
        i.putExtra("scale", scale);
        setActivityIntent(i);
        mActivity = this.getActivity();  
    }

    public void testExtras() {
        String str = "";
        str = mActivity.getIntent().getStringExtra("image-path");
        assertEquals(filename, str);
    }
}

ошибка обнаружена:

Невозможно разрешить действие для: Намерение (имеет Дополнения)

мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          android:versionCode="1"
          android:versionName="1.0"
          package="hk.com.novare.android.cropimage.tests">

    <uses-sdk android:minSdkVersion="8"/>
    <instrumentation
            android:targetPackage="hk.com.novare.android.cropimage"
            android:name="android.test.InstrumentationTestRunner"/>
    <application
            android:icon="@drawable/icon"
            android:label="@string/app_name">
        <uses-library android:name="android.test.runner"/>
    </application>
</manifest>

Я столкнулся с ошибкой выше, даже если я установил конструктор -> строку super (пакет) так же, как я указал в манифесте этого тестового проекта. пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Я думаю, все, что вам нужно сделать, это использовать

Intent i = new Intent();

См., Например, ответы по этой теме .

1 голос
/ 10 декабря 2012

При создании намерения вы передаете getInstrumentation().getContext(), который является контекстом тестового приложения.

То, что вы хотите, это getInstrumentation().getTargetContext(), который является контекстом целевого приложения.

0 голосов
/ 24 июня 2011

При построении Намерения, я думаю, вместо mInstrumentation.getContext() вы хотите позвонить getActivity(). Я предполагаю, что класс CropImage фактически находится в тестируемом пакете, а не в тестовом пакете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...