現在、プレーン C で組み込みプラットフォーム用の低レベル ドライバーをいくつか開発しています。単体テスト フレームワークとして unity+cmock を使用しています。
ただし、低レベルのものを書いているときに、次のパターンに出くわすことがよくあります。
テスト:
void test_mcp2515_read_register(void)
{
spi_frame_t expected_frame = {{0}};
expected_frame.tx_length = 2;
expected_frame.rx_length = 3;
expected_frame.tx_data[0] = MCP2515_READ_CMD;
expected_frame.tx_data[1] = TEST_ADDR;
expected_frame.callback = callback_test;
spi_transmit_ExpectAndReturn(expected_frame, true);
mcp2515_read_register(TEST_ADDR, callback_test);
}
実装:
void mcp2515_read_register(uint8_t addr, spi_callback callback)
{
spi_frame_t frame = {{0}};
frame.tx_length = 2;
frame.rx_length = 3;
frame.tx_data[0] = MCP2515_READ_CMD;
frame.tx_data[1] = addr;
frame.callback = callback;
spi_transmit(frame);
}
ご覧のとおり、テストと実装の間のコードには多くの重複があります。
これは問題ですか?私のテストの書き方は間違っていますか? それとも、この低レベルのテストをまったく書く必要はありませんか?