-1
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功能。它在头文件中提供给我。

4

1 回答 1

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)
于 2013-06-05T13:04:47.027 回答