2

このテストを試しましたが、getHits()は常に0を返します。誰か助けてくれませんか?

 public void testSettingsAboutShazamClickOnLink() {

    Instrumentation inst = getInstrumentation();
    IntentFilter intentFilter = new IntentFilter(android.content.Intent.ACTION_SENDTO);
    intentFilter.addDataScheme("mailto");


    ActivityMonitor monitor = inst.addMonitor(intentFilter, null, false);
    final Intent emailIntent = new Intent(android.content.Intent.ACTION_SENDTO);
    emailIntent.setData(Uri.parse("mailto:"));
    emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


    assertEquals(0, monitor.getHits());
    inst.getContext().startActivity(emailIntent);        
    monitor.waitForActivityWithTimeout(5000);
    assertEquals(1, monitor.getHits());
    inst.removeMonitor(monitor);
 }
4

1 に答える 1

2

私はこの問題を解決しました。私はSoloofRobotiumを使用しましたが、Soloはすべてのフィルターに一致するActivityMonitorを挿入しているようです。そのため、startActivityを呼び出すと、InstrumentationクラスのexecStartActivityが呼び出されます。

 Context who, IBinder contextThread, IBinder token, Activity target,
    Intent intent, int requestCode) {
    IApplicationThread whoThread = (IApplicationThread) contextThread;
    if (mActivityMonitors != null) {
        synchronized (mSync) {
            final int N = mActivityMonitors.size();
            for (int i=0; i<N; i++) {
                final ActivityMonitor am = mActivityMonitors.get(i);
               if (am.match(who, null, intent)) {
                   am.mHits++;
                    if (am.isBlocking()) {
                        return requestCode >= 0 ? am.getResult() : null;
                    }
                   break;
                }
            }
       }
    }

何かに一致するActivityMonitorがあるとすぐに、そのモニターのmHitsが増加し、「サイクル」が終了します。私が最初に行ったのはSoloの呼び出しでしたが、最初にチェックするActivityMonitorはSoloの1つであり、これがすべてに一致することを考えると、他のActivityMonitorはチェックされなかった後に追加されるため、他のモニターのmHits変数は増加しません。詳細を知りたい場合は、InstrumentationクラスのexecStartMonitorメソッドを参照してください。このメソッドは、startActivityが呼び出された後に呼び出されることに注意してください。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Instrumentation.java#Instrumentation.execStartActivity%28android.content.Context%2Candroid .os.IBinder%2Candroid.os.IBinder%2Candroid.app.Activity%2Candroid.content.Intent%2Cint%29

于 2012-12-11T17:44:48.810 に答える