我目前正在使用纯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);
}
正如您所见,测试和实现的代码之间存在很多重复。
这是一个问题吗?我是不是写错了我的测试?或者我根本不需要为这种低级别的东西编写测试吗?