package com.android_textbook.learnjunit.task; import java.util.ArrayList; import java.util.List; import com.android_textbook.learnjunit.task.SimpleCountUpTask; import android.test.InstrumentationTestCase; public class SimpleCountUpTaskTest3 extends InstrumentationTestCase { public static class SimpleCountUpTaskEx extends SimpleCountUpTask { // private CountDownLatch signal = new CountDownLatch(1); boolean called = false; private List<Integer> progress = new ArrayList<Integer>(); private Integer result; @Override protected void onProgressUpdate(Integer... values) { progress.add(values[0]); } @Override protected void onPostExecute(Integer result) { this.result = result; if (called) { throw new RuntimeException("called twice"); } called = true; // signal.countDown(); } } // UIスレッド上でインスタンスを生成させるためのクラス class RunnableImpl implements Runnable { SimpleCountUpTaskEx task; @Override public void run() { task = new SimpleCountUpTaskEx(); }; } SimpleCountUpTaskEx task; public void testSuccessPattern() throws Throwable { // UIスレッド上でインスタンスを生成する // RunnableImpl r = new RunnableImpl(); // runTestOnUiThread(r); runTestOnUiThread(new Runnable() { @Override public void run() { task = new SimpleCountUpTaskEx(); task.execute(10); } }); task.get(); assertEquals(10, task.progress.size()); assertEquals(55, task.result.intValue()); assertTrue(task.called); } }