VS2010中的单元测试 - “调试”通过,“运行”失败

时间:2012-01-29 16:01:49

标签: visual-studio-2010 unit-testing

我在Visual Studio 2010中遇到了一个奇怪的单元测试问题。 当我使用“Debug test”(没有任何断点)时,我有一个测试通过,但是当我使用“Run test”时会出错。 此测试使用外部dll,因此我无法正确调试它。

你知道有什么理由可以解决这种情况吗? 为什么“调试测试”与“运行测试”不同,当所有其他参数相同时?

3 个答案:

答案 0 :(得分:3)

将解决方案切换到Release模式而不是Debug,运行完整版本,切换回调试并重试并让我知道结果,我认为测试将通过....

答案 1 :(得分:2)

可能有几个原因,但要指出一个原因,你必须给我们一些代码才能使用。

可能是代码排除:

#ifdef _DEBUG
//do something
#endif

这只会在调试模式下执行。

可能是优化。虽然它们通常不应该影响行为,但您不应该依赖于析构函数或复制构造函数。

如果您在代码中进行任何黑客操作,它也可能仅对调试有效。

答案 2 :(得分:1)

我怀疑你正在访问内存超出范围。调试和发布之间的一个主要区别是,如果填充和特殊标记用于内存分配,调试会添加工具包以捕获某些类型的错误。这意味着调试版本和发布版本之间的内存布局通常非常不同。我怀疑你是以调试器没有捕获的方式访问内存超出界限,在调试版本中你发现了一个意外有效的值,但在发布版本中是无效的。