【发布时间】:2012-12-11 03:14:11
【问题描述】:
我有一个如下所示的课程:
public class MyService
{
private MyService(){}
public static string GetStuff()
{
var stuffDid = new MyService();
return stuffDid.DoStuff();
}
private string DoStuff()
{
//do stuff
}
//other private helpers
}
显然我遗漏了很多,但这是一般的外壳。
现在,我有一个单元测试:
[Test]
public void MyTest()
{
var results = MyService.GetStuff();
}
我在单元测试中设置了断点,我可以看到results 有数据。但是,我确实在MyService 上设置了断点,除非我将它们放在花括号上,否则什么都不会受到影响。我无法理解,因为results 有数据,我在MyService 中的return 语句应该受到打击,对吧?
我错过了什么吗?我是否完全忘记了一些最基本的规则?为什么MyService 中什么都没有被击中?如果我用F11 手动进入它,它只会跳来跳去,甚至不会像我预期的那样遍历每一行。此外,当我手动单步执行时,我倾向于在最初应该点击某些代码之后点击它。并且任何switch 语句似乎默认为第一个选项,即使正在切换的值应该明确输入不同的case。
我什至尝试过创建MyService 构造函数public 并删除所有static 方法,但它仍然不起作用。
我的测试和“核心”代码在同一个解决方案中,但项目不同(分别为Test 和Core)。其他测试在Core 中遇到断点没有问题,只有在特定测试中才会出现这个问题(唯一正在测试MyService 的测试)。
我已经删除了我的 PDB 文件并清理了解决方案。还是什么都没有。
【问题讨论】:
-
你的测试中是否有一个圆圈(不确定它是否仅适用于 NUnit)?如果你这样做了,点击它,然后点击调试。然后它应该可以工作了。
-
代码在同一个解决方案中吗? Visual Studio 的调试器有一个“只是我的代码”选项。不确定它是如何工作的。
-
导入是否正确?你的单元测试能看到项目代码还是只看到编译好的dll?
-
是的,所有代码都在同一个解决方案中。我的测试在一个单独的项目中(称为测试),但其他测试似乎没有在 Core 中遇到断点问题(其中的代码不会被命中)。
-
我不确定,但调试符号似乎已关闭:您可以在执行以下步骤后再次尝试调试吗:(1)首先构建“Core”项目。 (2) 然后运行测试溶液。看看它是否命中断点。
标签: c# debugging visual-studio-2012 visual-studio-debugging