【问题标题】:Correction using Unit Testing in C使用 C 中的单元测试进行更正
【发布时间】:2011-01-17 00:15:52
【问题描述】:

在软件开发人员职位的编程测试中提出了类似的问题。两天后,我仍然没有答案。

假设我们有一个函数,它接受两个浮点数作为输入,并且它没有任何副作用并且确定性地执行(也考虑一个单线程环境)。例如。 bool test(float arg1, float arg2);

为了测试它,假设我们使用任意大量的随机输入。该功能很少失败,但它失败了。假设我们用这段代码来测试:

//Set a,b
if(test(a,b)){
    printf("Test passed\n");
} else {
    printf("%f %f\n", a,b);
}

因此,在捕获打印的输入后,我们会像这样使用这些输入:

a = //Fill from the printf
b = //Fill from the printf

boolean a = test(a,b);

验证a的结果后,测试有效/通过。你有什么解释?我知道用于调试的 printf 可能很棘手,但是……这是我被问到的问题。

【问题讨论】:

    标签: c unit-testing methods call


    【解决方案1】:

    带有%f 说明符的printf 打印的十进制数字不超过7 位,以避免给人一种比实际更准确的印象。

    我的猜测是其中一个输入是这样的,当它通过printf 打印出来,然后由编译器读回时,结果会略有不同。

    【讨论】:

      【解决方案2】:

      ab 中的值可能比printf 打印的有效数字更多,因此这是一个精度问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多