在我的 Instrumentation Tests 中,我有一个基类,它extends ApplicationTestCase<TestApplication>
TestApplication extends Application
只是在onCreate()
.
在一个测试套件中,我正在测试一个通过new Handler();
调用实例化新处理程序的类。这在应用程序中编译并运行良好,但是,在测试中总是失败:
java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序
在 Application 类中,调用:
@Override
public void onCreate() {
super.onCreate();
this.getMainLooper().prepare();
}
也无济于事,因为第一个测试运行良好,后续测试失败
java.lang.RuntimeException: 每个线程只能创建一个 Looper
并调用
this.getMainLooper().quit()
or this.getMainLooper().quitSafely()
inonTerminate()
似乎相同的线程用于套件中运行的所有测试(也导致上述问题),因此由于在活动线程上退出 Looper 的问题,所有测试都会出错。
我可以通过使用静态布尔标志只运行一次 prepare() 来解决这个问题,但这看起来非常笨拙。我应该提交一个错误,还是代码中有什么地方做错了?
提前感谢帮助。