最初に、テストされる側のコードを紹介します。
SurfaceViewのLayoutのファイルです。main.xmlとしてres/layout/に保存されます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<SurfaceView
android:id="@+id/surfaceView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
ActivityのonCreateでSurfaceViewを生成する部分です。main.xmlを追加します。
setContentView(R.layout.main);
SurfaceViewがタッチ(sendPoinsterSync())されたことを確認するために、タッチされた時に、ログを出力します。
@Override
public boolean onTouchEvent(MotionEvent me) { Log.d("surface", "x=" + me.getX() + " y=" + me.getY()); return false; }
次に、テストする側のコードです。ActivityInstrumentationTestCase2 Classのサブクラスです。.
setUp()です。かならずgetActivity()をします。たぶんですが、getActivity()でテストするActivityを生成していると思います。
public void setUp() throws Exception {
super.setUp(); mActivity = getActivity(); mInstrumentation = getInstrumentation(); }SurfaceViewをタッチする部分のコードです。時間をSystemClockクラスから取得しています。
long downtime = SystemClock.uptimeMillis();
long eventtime = SystemClock.uptimeMillis(); MotionEvent event = MotionEvent.obtain(downtime, eventtime, MotionEvent.ACTION_DOWN, 100, 100, 0); mInstrumentation.sendPointerSync(event); eventtime = SystemClock.uptimeMillis() + 1000; event = MotionEvent.obtain(downtime, eventtime, MotionEvent.ACTION_UP, 100, 100, 0); mInstrumentation.sendPointerSync(event);これらのコードで、JUnitを実行すると、Logcatに以下のように表示され、sendPointerSyncが動作していることがわかります。
D/surface(1469): x=100.0 y=100.0 D/surface(1469): x=100.0 y=100.0
テストされる側のソースコードです。 ここ.
テストする側のソースコードです。 ここ.
0 件のコメント:
コメントを投稿