VS2010和.exe中的GTest - 结果不同

时间:2014-08-21 10:34:39

标签: c++ visual-studio-2010 unit-testing exe googletest

我有一个带有代码项目和'UnitTest'项目的VS2010解决方案。代码项目被编译为dll(并生成.lib)。 UnitTest项目编译为.exe。

在代码中,我有一个方法mymethod(),应由一个单元测试覆盖。如果我将'UnitTest'设置为启动项目并运行,我可以看到确实调用mymethod()

  • 在释放模式下使用断点进入,并在调试模式下禁用优化+

  • 将printf添加到mymethod(),printf称为

UnitTest正确编译为.exe,.lib和.dll是最新的。

当我从文件中启动.exe时,不调用printf(而代码中其他点的其他printf被调用)。如果我从命令行启动它,同样的事情。

当从.exe。

调用UnitTest时,确保在代码中采用了另一个路径

应该检查哪些重要的事情?

这里可以发生什么?

---------------------------

修改

调查后:当使用可执行文件启动测试时,标志设置为0,因为转换为双重失败:我打印以下内容

printf("arr_size[0] %d, arr_size[1] %d, numOffElms %d 
-- result multiplication REAL %d, 
NOT REAL %d",arr_size[0], arr_size[1],numOffElms, 
(real_T)(arr_size[0] * arr_size[1]), arr_size[0] * arr_size[1]);

其中REAL_T是使用

定义的double的宏

typedef double real_T;

打印结果如下

arr_size[0] 90000, arr_size[1] 24, numOffElms 0 -- result multiplication REAL 0, 
NOT REAL 2160000

!!!!

在VS2010中,在具有已禁用优化的调试或发布中,转换为双精度似乎是正确的。

这来自何处以及如何解决?

由于

0 个答案:

没有答案