这个问题可能不够明确。
我正在尝试使用VSCode和Platformio为Arduino程序编写测试。
下面是我要测试的函数的示例:
#include "flash.h"
#include <Arduino.h>
void flashXTimes(
uint8_t LEDPin,
uint16_t numberOfFlashes,
uint16_t onDuration,
uint16_t offDuration)
{
for (uint16_t i = 0; i < numberOfFlashes; i++)
{
digitalWrite(LEDPin, HIGH);
delay(onDuration);
digitalWrite(LEDPin, LOW);
delay(offDuration);
}
}
我想检查一下当我用numberOfFlashes 3调用这个函数时,它实际上会 Flink 3次。当然代码很简单,不需要测试,但我还是想做测试。
所以ChatGPT给了我一个使用模拟数字写入的提示
static uint32_t digitalWriteCalls = 0;
void digitalWriteMock(uint8_t pin, uint8_t val) {
digitalWriteCalls++;
}
但后来告诉我digitalWrite = &digitalWriteMock;
,它在Python中可以很好地工作,但在C中不行。
通过使用Unity遵循Platformio测试指南,我进行了测试,但没有任何意义。
我希望在C/Arduino测试入门方面得到一些帮助
1条答案
按热度按时间r55awzrz1#
根据ChatGPT的回答,您可能希望定义一个类型为“pointer to function“的变量,当您测试时,该变量指向test函数,当您运行“for真实的”时,该变量指向real函数。
例如:
显然,在mock函数中,你可以做任何你想做的事情,比如确认传递的参数值是什么,等等。