Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中编写使用指针进行单元代码测试的方法_C_Pointers - Fatal编程技术网

如何在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("---------------

我有以下C语言的单元测试代码。我正在尝试编写一个代码,它将成功地与C语言并行编译,但一点运气都没有。它不断返回错误
失败
。在什么时候我可能会出错,或者单元测试代码有错误。 单位代码如下:

#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)