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