gpt4 book ai didi

c++ - 单元测试失败,异常代码为 c0000005

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:29 24 4
gpt4 key购买 nike

我正在尝试使用 native 单元测试项目在 Visual Studios 2012 中创建单元测试。

这是我的测试:

TEST_METHOD(CalculationsRoundTests)
{
int result = Calculations::Round(1.0);
Assert::AreEqual(1, result);
}

导出类:

#ifdef EXPORT_TEST_FUNCTIONS
#define MY_CALCULATIONS_EXPORT __declspec(dllexport)
#else
#define MY_CALCULATIONS_EXPORT
#endif
...
class CALCULATIONS_EXPORT Calculations {
...
public:
static int Round(const double& x);

函数本身:

int Calculations::Round(const double& x)
{
int temp;
if (floor(x) + 0.5 > x)
temp = floor(x);
else
temp = ceil(x);

return int(temp);
}

但是,测试几乎总是失败,错误代码为 c0000005(访问冲突)。第一次使用 x 或可能在函数中声明的任何其他变量时,测试将失败。

我按照 Unresolved externals when compiling unit tests for Visual C++ 2012 中的说明进行操作

最佳答案

这是一个 known bug .不幸的是,Microsoft 认为这是“无法修复”的。

简而言之,有两种解决方法:

  1. 在 Release模式下编译实际项目,在 Debug模式下编译测试项目。
  2. 将所有可测试功能外包给静态库项目。

关于c++ - 单元测试失败,异常代码为 c0000005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com