使用 C 中的单元测试进行更正

标签 c unit-testing methods call

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

假设我们有一个函数,它接受两个 float 作为输入并且它没有任何副作用并且确定性地执行(也考虑单线程环境)。例如。 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 可能很棘手,但是...这是我被问到的问题。

最佳答案

带有 %f 说明符的

printf 不会打印超过 7 位十进制数字,以避免给人留下比实际更准确的印象。

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

关于使用 C 中的单元测试进行更正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709007/

相关文章:

在不输出变量的情况下调用 C 函数

unit-testing - 使用闭包对 GORM 调用进行单元测试

angularjs - Karma 和 Ionic 上的 CordovaCamera 选项

javascript - 对 EmberJS 应用程序进行单元测试(实际单元测试)

javascript - 函数中的递归调用如何工作?

java - 为什么驱动程序在类中找不到方法?

c - Gstreamer gst_event_new_seek 起止位置

c - 在编译时将用户空间 C 函数代码下降/解析到内核空间?

c++ - 是否可以先编译最近更改的文件?

python - 检查函数是否是某个对象的方法