Merge change Id432656e into eclair-mr2

* changes:
  Add support for @UiThreadTest on setUp() and tearDown() in InstrumentationTestCase.
This commit is contained in:
Android (Google) Code Review
2009-12-10 11:54:13 -08:00

View File

@@ -147,6 +147,42 @@ public class InstrumentationTestCase extends TestCase {
}
}
@Override
public void runBare() throws Throwable {
runMethod("setUp");
try {
runTest();
} finally {
runMethod("tearDown");
}
}
private Throwable[] runMethod(String name) throws Throwable {
final Throwable[] exceptions = new Throwable[1];
final Method m = getClass().getMethod(name, (Class[]) null);
if (m.isAnnotationPresent(UiThreadTest.class)) {
getInstrumentation().runOnMainSync(new Runnable() {
public void run() {
try {
m.invoke(this);
} catch (Throwable throwable) {
exceptions[0] = throwable;
}
}
});
if (exceptions[0] != null) {
throw exceptions[0];
}
exceptions[0] = null;
} else {
m.invoke(this);
}
return exceptions;
}
/**
* Runs the current unit test. If the unit test is annotated with
* {@link android.test.UiThreadTest}, the test is run on the UI thread.