int getSpeedOfMotorInPercent(int RPM)
{
int speedOfMotor = (RPM/5000.0)*100;
return speedOfMotor;
}
static char *test_GetSpeedOfMotor(int speedInPercent)
{
mu_assert("error, RPM != 70%", speedInPercent == 70);
return 0;
}
static char *run_all_tests(int RPM)
{
mu_run_test(test_GetSpeedOfMotor(RPM));
return 0;
}
我在mu_run_test(test_GetSpeedOfMotor(RPM));
我尝试删除函数的指针,但后来我得到了更多的错误。
修改
#define mu_assert(message, test) do { if (!(test)) return message; } while (0)
#define mu_run_test(test) do { char *message = test(); tests_run++; if (message) return message; } while (0)
extern int tests_run;
这是mu_run_test
函数。它在头文件中提供给我。
答案 0 :(得分:1)
您将test_GetSpeedOfMotor(RPM)
作为test
传递给宏,这将产生以下代码:
char *message = test_GetSpeedOfMotor(RPM)();
由于您可能正在使用不想更改的测试框架,只需从RPM
函数的声明中删除test_GetSpeedOfMotor
参数,然后像这样使用它:
int testRpmInPercent;
static char *test_GetSpeedOfMotor()
{
mu_assert("error, RPM != 70%", testRpmInPercent == 70);
return 0;
}
static char *run_all_tests(int RPM)
{
testRpmInPercent = RPM;
mu_run_test(test_GetSpeedOfMotor);
return 0;
}
然后你必须找到另一种与测试函数共享RPM
值的方法。就像全局变量或测试框架必须提供的任何方法一样。
如果您愿意更改测试框架,我会修改该定义(在()
后删除test
):
#define mu_run_test(test) do { char *message = test; tests_run++; if (message) return message; } while (0)