感謝阿德里亞諾的熟練直覺,我能夠懷疑主張是罪魁禍首。
事實上,進行了打印的神祕Fail:
消息時所運行的代碼塊確實叫這樣的斷言:
Debug.Assert(myString.Length > 0);
顯然,「失敗」旨在被理解爲「斷言失敗」。我可以將其更改爲驗證這一點:
Debug.Assert(myString.Length > 0, "Assertion failed with myString == \"" + myString + "\".");
這改變了Fail:
消息Fail: Assertion failed with myString == ""
和消除了混亂,並給了我一個手柄上進行進一步的調試問題(因爲我知道這個說法是準確的線製作失敗消息)。
事實證明,在調試模式下,Visual Studio在斷言失敗時不會中斷,而是簡單地將失敗消息打印到輸出(啓用斷點將在文章here中討論)。在我的情況下,我一直在使用跟蹤偵聽器,以便我的程序輸出將打印到文件以及控制檯。要做到這一點,我用下面的初始化代碼:
private static void PrepareListeners()
{
Trace.Listeners.Clear();
var logPath = "/path/to/my/file.txt";
File.Delete(logPath);
var textListener = new TextWriterTraceListener(logPath);
var consoleListener = new ConsoleTraceListener(false);
consoleListener.TraceOutputOptions = TraceOptions.DateTime;
Trace.Listeners.Add(textListener);
Trace.Listeners.Add(consoleListener);
Trace.AutoFlush = true;
}
事後我一直與Trace.WriteLine
產生輸出。跟蹤偵聽器看起來也正在拾取斷言失敗消息。 (他們出現在我的日誌文件以及控制檯中。)
模糊的問題可能是,我覺得我有一個合法的問題。如果有人對我可以提供的其他信息有什麼建議,請成爲我的客人。也就是說,沉默的投票並不是很有幫助 - 沒有被告知有什麼問題,我只能斷定選民只是處於一種交叉的情緒。 – Superbest
它可能是失敗斷言的跟蹤輸出嗎? –
@Adriano是的,結果是這樣。那裏有一個斷言,沒有失敗的消息。你可以發佈這個答案,以便我可以接受它嗎? – Superbest