BluetoothDevice
という変数を持つクラスのユニットテストについて質問したいと思います。Androidユニットテスト:Bluetoothデバイスを模擬してパーセルに書き込む
私のオブジェクトは、いくつかのプリミティブ変数とBluetoothDevice変数を含む単純なオブジェクトです。私のオブジェクトもパーセル可能です。
最終的に私のコードはモバイルデバイス上で完全に機能しますが、単体テストを実行すると奇妙なエラーが発生します。
以下に示すようにIは、テストクラスにBluetoothDeviceをモック:私が使用する他のプリミティブのうち、私の目的で
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class BluetoothDeviceTest {
@Mock
BluetoothDevice device1;
@Before
public void initMocks(){
MockitoAnnotations.initMocks(this);
when(device1.getAddress()).thenReturn("01:02:03:04:05:06");
when(device1.getName()).thenReturn("device767b1");
when(device1.getBondState()).thenReturn(BOND_NONE);
}
}
を:
Iは
@Override public void writeToParcel(Parcel out, int flags)
方法内側out.writeParcelable(mBluetoothDevice,0);
を使用します。コンストラクタ内に
mBluetoothDevice = in.readParcelable(BluetoothDevice.class.getClassLoader());
を使用します。私のオブジェクトインスタンスの個別のをテスト
ユニットテストは、例外もう一度私のコードは完全に正常に動作してたときに個別のは、私が仕事のモバイルアプリで良い作品がありますのでご注意ください java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
で失敗します。単体テストだけが変な動作をしています。
これは私の模倣したBluetoothDevice
変数が通常の実際のインスタンスよりもパーセル内で短く、パーセル内のデータフィールドの順序が乱れているためです。
誰かが嘲笑でテストしたBluetoothDevice
を持っていますが、私には何かヒントはありますか?ありがとう