如何在C中编写使用指针进行单元代码测试的方法
我有以下C语言的单元测试代码。我正在尝试编写一个代码,它将成功地与C语言并行编译,但一点运气都没有。它不断返回错误如何在C中编写使用指针进行单元代码测试的方法,c,pointers,C,Pointers,我有以下C语言的单元测试代码。我正在尝试编写一个代码,它将成功地与C语言并行编译,但一点运气都没有。它不断返回错误失败。在什么时候我可能会出错,或者单元测试代码有错误。 单位代码如下: #define TEST_LBSG 2494 #define TEST_LBS 5.5 int testConvertLbsG(void) { double lbs = TEST_LBS; int intA, intB, fail = 0; printf("---------------
失败
。在什么时候我可能会出错,或者单元测试代码有错误。
单位代码如下:
#define TEST_LBSG 2494
#define TEST_LBS 5.5
int testConvertLbsG(void)
{
double lbs = TEST_LBS;
int intA, intB, fail = 0;
printf("---------------------------\n");
printf("Function: convertLbsG\n");
printf("---------------------------\n");
// Test-1: argument and return value
intA = intB = 0;
printf("Test-1: ");
intB = convertLbsG(&lbs, &intA);
if (intA == intB && intA == TEST_LBSG)
{
printf("<PASSED>\n");
}
else
{
printf("<!!! FAILED !!!>\n");
fail++;
}
// Test-2: return value only
intA = intB = 0;
printf("Test-2: ");
intA = convertLbsG(&lbs, NULL);
if (intA == TEST_LBSG)
{
printf("<PASSED>\n");
}
else
{
printf("<!!! FAILED !!!>\n");
fail++;
}
// Test-3: argument only
intA = intB = 0;
printf("Test-3: ");
convertLbsG(&lbs, &intA);
if (intA == TEST_LBSG)
{
printf("<PASSED>\n");
}
else
{
printf("<!!! FAILED !!!>\n");
fail++;
}
return fail;
}
}
我错在哪里
额外代码:
假设这是我的单元测试代码:
int testConvertLbs(void)
{
double lbs = TEST_LBS, dblA = 0.0;
int intB = 0, fail = 0;
printf("---------------------------\n");
printf("Function: convertLbs\n");
printf("---------------------------\n");
printf("Test-1: ");
convertLbs(&lbs, &dblA, &intB);
if ((dblA == lbs / TEST_LBSKG) && (intB == TEST_LBSG))
{
printf("<PASSED>\n\n");
}
else
{
printf("<!!! FAILED !!!>\n\n");
fail++;
}
return fail;
}
}在下面的代码中:
intA = intB = 0;
printf("Test-3: ");
convertLbsG(&lbs, &intA);
if (intA == TEST_LBSG)
只有lhs
更新,而不是intA
。变量intA
保持原来的0
值,测试失败
我猜convertLbsG()
的目的是更新第二个参数,而不是第一个参数
int convertLbsG(double* x, int* y) {
if (y == NULL)
{
return *x;
}
else
{
return *y = (*x); // was *x = (*y);
}
此外,我建议添加const
,以避免将来出现类似问题
int convertLbsG(const double* x, int* y)
“它将成功地与它一起编译”与什么一起?您编写测试的代码是什么?请至少张贴功能签名和用途。请格式化单元测试代码中的代码。我已经描述并发布了您正在尝试编写一个与单元测试代码一起运行的测试。。。?对不起,我不明白这是什么意思。测试的目的是什么?很难说是测试失败还是代码失败,因为我们不知道代码应该做什么错误“失败”仍然存在returned@Nickson替换
双磅=测试磅代码>带有双磅=测试磅代码>谢谢工作得很好在旁注中,一个人如何处理一个有三个参数而不是two@Nickson,请指定用例
int convertLbsG(double* x, int* y) {
if (y == NULL)
{
return *x;
}
else
{
return *y = (*x); // was *x = (*y);
}
int convertLbsG(const double* x, int* y)