我在Visual Studio 2010 Ultimate中遇到了一个奇怪的问题: 我的一个Nunit(2.6.2)测试用例在调试模式下失败但是在运行模式下传递,好像我们有两个场景的完全不同的代码路径。
这是一个已知的错误吗?或者我缺少一些选项吗?
请赐教! 非常感谢。
编辑 - 更多信息 我的应用程序向组织内的一组人员写的dll提交了一些请求。 dll做了一些计算并将结果返回给我。
在探索dll行为的测试用例中(例如,提交具有特定参数的请求,检查dll的输出),运行Nunit测试工作正常,但调试测试用例会给我一个错误 - 从内部抛出一个异常DLL。
重要提示:运行/调试另一个测试用例可以获得一致的结果。
因此,对于奇怪的测试用例: 1,dll是好的,调试模式下的东西打破了dll 2,或者,dll有一个bug,由调试模式下的某些东西触发。
据我所知,在visual studio中运行和调试一段代码之间的唯一区别是,在调试时,加载了一个pdb文件,而在运行它时则没有。本质上,加载符号表以识别代码执行。
然后问题首先没有意义 - 为什么加载符号表会影响dll的行为? (要求任何人在没有看到任何代码的情况下给出解释是不公平的;但是,因为它是公司道具代码,我不能在这里展示。请,如果你在职业生涯中遇到过这样的事情,请与我分享在你的情况下发生了什么 - 让我希望我的问题有同样的原因,以便我实际上可以知道出了什么问题。谢谢)
答案 0 :(得分:0)
您使用的是代码覆盖吗? 如果是这样,请尝试禁用它并运行。它可能会奏效。
答案 1 :(得分:0)
您可能遇到过采用相同代码路径的情况,但由于优化,调试与非调试的结果略有不同。这里有几个不同的可能性:
这是一个无法调试的痛苦,但我建议您在整个方法和测试中添加日志记录,以便您可以看到正在发生的事情。 (并希望记录本身不会改变测试结果,这也是可能的......)
答案 2 :(得分:0)
感谢您的回复。 我已经确定了原因:这是由于一个错误的参数驱动dll坚果。我的错。 它仍然没有回答为什么调试时的行为变得疯狂,但在运行测试用例时表现良好的问题。
但是,我猜,因为参数首先是错误的,所以我不能真的责怪dll的疯狂。无论如何,当我通过正确的参数时,一切都很顺利。
非常感谢你们。