我有一个依赖于AsyncTask
来检索数据的数据库组件。一旦在应用程序中使用它,它将始终从UI线程调用,但是在JUnit测试中如何做到这一点而不实例化Activity
(我没有活动,也不应该仅为测试目的创建一个)?
runOnUiThread()
是一个活动方法,因此不是一个选项。是否有一种方法可以通过从Android测试库中获取一个UI线程或实现MockUiThread来模拟UI线程?
我有一个依赖于AsyncTask
来检索数据的数据库组件。一旦在应用程序中使用它,它将始终从UI线程调用,但是在JUnit测试中如何做到这一点而不实例化Activity
(我没有活动,也不应该仅为测试目的创建一个)?
runOnUiThread()
是一个活动方法,因此不是一个选项。是否有一种方法可以通过从Android测试库中获取一个UI线程或实现MockUiThread来模拟UI线程?
Android.OS.Handler可以更新UI。
要使用Handler,您需要将其子类化并重写handleMessage()以处理消息。
更新:
我正在使用monodroid,因此我不知道这是否完全可翻译,但是,
您可能可以使用
new Handler(context.getMainLooper()).post(runnable);
context
can be taken from the app as follows, if no activity is available in the test scope: Application context = (Application)InstrumentationRegistry.getTargetContext().getApplicationContext();
- lucidbrot