6

文字列を渡すオブジェクトのメソッドを呼び出す単体テストがあります。

呼び出されたメソッドが最初に行うことの 1 つは、文字列が null または空であるかどうかをチェックすることです。

ただし、filePath の値が何であれ、string.IsNullOrEmpty への呼び出しは true です。下の画像を参照してください。

文字列が null または空である理由

ここで何か不足していますか?

編集:

null と string.Empty を個別にチェックすると、期待どおりに機能します。

ここに画像の説明を入力

編集2:

ソリューションをクリーンアップし、ファイル システムを介して bin ディレクトリを削除しましたが、再構築後、ArgumentNullException が実際にはスローされていませんが、デバッガーは ArgumentNullException がスローされていることを示しています。

4

3 に答える 3

0

この問題に遭遇したのはこれが初めてです。

今のところは、IF ステートメントの後ろに次のコードを追加します。

#if DEBUG
            else
            {
                // A hack to fix the debugger issue on the IsNullOrEmpty statement above.
            }
#endif
于 2015-07-03T11:17:18.330 に答える
0

Visual Basic with でこれも経験していIf String.IsNullOrEmpty(foo)ます。アンドレイのコメントに同意します。これは、デバッガーがこの特定の構成を視覚化する方法にバグがあるようです。

クリーン/リビルドは影響しませんでした。興味深いことに、より複雑な本文をステートメントに追加すると、デバッガは本文の最後の行Ifでのみ一時停止します (黄色の矢印) 。コード行を実際に実行するわけではありません

なぜこれが起こるのかについて誰かが私たちに洞察を与えることができれば興味深いでしょう.

これが私がこれを見ているコードです:

ここに画像の説明を入力

nullではないe.Cancel = Trueにもかかわらず、デバッガーの矢印が行上にあることに注意してください。F10 を押すと、矢印が ElseIf ステートメントに進み、まだ False のままです。myItem.Subjecte.Cancel

また、デバッガーがこの行にある間、通常のように矢印を別の行にドラッグすることはできません。黄色の矢印をドラッグして別の行に移動しようとすると、次のエラーが発生します。

ここに画像の説明を入力

于 2015-07-02T13:40:49.410 に答える