在我的Android应用程序中,有以下代码:
BluetoothManager bm = (BluetoothManager)activity.getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter ba = bm.getAdapter();
我想使用Robolectric进行单元测试。我正在使用Robolectric 2.2。 但是我发现bm是空的,我不知道如何嘲笑它。
答案 0 :(得分:1)
测试蓝牙和其他系统服务的挑战是这些类都是最终的。
因此,如果您想要注入其他任何东西,您需要围绕最终类创建一个包装器,然后提供实现转发到实际的蓝牙类和另一个模拟您的东西的实现。但是然后需要更新所有编码以直接使用该包装而不是最终类。
PowerMock但是应该能够处理这些final classes。摘要(更多细节请点击链接)