首页 > 解决方案 > Android广播接收器单元测试

问题描述

我是 Android 新手,正在学习BroadcastReceiver。我正在尝试sendBroadcast从 Android 单元测试接收器,并尝试检查接收器接收到的意图操作是否有效。如果我想将意图数据从接收器发送到单元测试,方法是什么。

public class ExampleUnitTest {
    private Context mContext;
    private AsyncTableProcess sgTable;
    private final static String WHOLE_HOME_ASYNC = "com.atv.intent.action.WHOLE_HOME_AE";

    // Executes each task synchronously using Architecture Components.
    @Rule
    public InstantTaskExecutorRule instantExecutorRule = new InstantTaskExecutorRule();

    @Before
    public void setUp() throws Exception {
        mContext = mock(Context.class);
        sgTable = new AsyncTableProcess();
    }
    @Test
    public void addition_isCorrect() {
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(WHOLE_HOME_ASYNC);
        mContext.registerReceiver(sgTable, filter);

        Intent intent = new Intent();
        intent.setAction(WHOLE_HOME_ASYNC);
        intent.putExtras(setWholeHomeBundleExtras());
        mContext.sendBroadcast(intent);
   }
}

public class AsyncTableProcess extends BroadcastReceiver {
    private static final String sgsLiteWholeHomeAE = "com.atv.intent.action.WHOLE_HOME_AE";


    @Override
    public void onReceive(final Context context, Intent intent) {
        final String message = intent.getAction();

        //Response back to unitTest.
        switch (message) {
            case sgsLiteWholeHomeAE:
                Bundle extras = intent.getExtras();
                //updating hash table..
                break;
        }

    }
}

标签: javaandroidandroid-intentbroadcastreceiver

解决方案


推荐阅读