我有一个单元测试,它调用传入字符串的对象的方法。
被调用的方法所做的第一件事就是检查字符串是否为空或为空。
但是,无论 filePath 的值是什么,对 string.IsNullOrEmpty 的调用都是 true。见下图。

我在这里错过了什么吗?
编辑:
检查 null 和 string.Empty 分别按预期工作:

编辑2:
我已经清理了解决方案,通过文件系统删除了 bin 目录,但在重建之后,调试器仍然显示应该抛出 ArgumentNullException,尽管它实际上没有被抛出。
的内容filePath绝对不为空(也不为空),因此我们有两个选择:
filePath,它在 null 上为空更新
您的问题更新让我认为第二个选项(上述)是一个
我也在 Visual Basic 中使用If String.IsNullOrEmpty(foo). 我同意 Andrei 的评论,这似乎是调试器如何可视化这个特定构造的错误。
清理/重建不影响它。有趣的是,如果您在If语句中添加更复杂的主体,调试器只会在主体的最后一行暂停(即黄色箭头) 。它实际上并不执行代码行。
如果有人能给我们一些关于为什么会发生这种情况的见解,那将会很有趣。
这是我看到的代码:

请注意,调试器箭头在 line 上e.Cancel = True,即使myItem.Subject它不为空。当我按 F10 时,箭头将前进到 ElseIf 语句,并且e.Cancel仍然为 False。
此外,当调试器在这一行时,我不能像往常那样将箭头拖到不同的行。如果我试图通过拖动黄色箭头移动到另一行,我会收到以下错误:

这是我第一次遇到这个问题。
我们现在绕过它的方法是在 IF 语句的后面添加以下内容。
#if DEBUG
else
{
// A hack to fix the debugger issue on the IsNullOrEmpty statement above.
}
#endif