UDPパケットとして送信するために使用されるバイト配列を生成するコードをテストしたいと思います。
テストですべてのバイト(ランダムなバイト、タイムスタンプなど)を再現することはできませんが、事前に決定できるバイトをテストしたいと思います。
JUnit 4.8(およびMockito 1.8)を使用して次のようなことが可能ですか?
Packet packet = new RandomPacket();
byte[] bytes = new byte[] {
0x00, 0x02, 0x05, 0x00, anyByte(), anyByte(), anyByte(), anyByte(), 0x00
};
assertArrayEquals(packet.getBytes(), bytes);
上記のサンプルはもちろん機能していません。私はである種のワイルドカードを使用する方法を探していますassertArrayEquals()
。
PS:今のところ私の唯一の選択肢は、各バイトを個別にチェックすることです(そしてランダムなバイトを省略します)。しかし、これは静かで退屈で、実際には再利用できません。
JB Nizetからの回答のおかげで、次のコードが適切に配置され、正常に機能しています。
private static int any() {
return -1;
}
private static void assertArrayEquals(int[] expected, byte[] actual) {
if(actual.length != expected.length) {
fail(String.format("Arrays differ in size: expected <%d> but was <%d>", expected.length, actual.length));
}
for(int i = 0; i < expected.length; i ++) {
if(expected[i] == -1) {
continue;
}
if((byte) expected[i] != actual[i]) {
fail(String.format("Arrays differ at element %d: expected <%d> but was <%d>", i, expected[i], actual[i]));
}
}
}