好,終於得到全面修復此。事實證明,錯誤級別與這個特定問題無關。相反,最終在Visual Studio輸出窗口中出現的文本格式似乎是最重要的...
失敗的NUnit測試顯示在Visual Studio錯誤列表窗口中,其中的項目描述設置爲命名空間和NUnit錯誤消息的方法名稱以及設置爲隱含字符串'EXEC'的文件。如果在NUnit錯誤消息的開始處打開「輸出」窗口,同樣的字符串'EXEC'也出現。但它不是原始NUnit錯誤消息的一部分。我添加了一個人在這方面的中間人,看看發生了什麼事情,就像這樣:
static void Main(string[] args)
{
Console.WriteLine("args: " + string.Join(" ", args));
Process p = new Process()
{
StartInfo = new ProcessStartInfo(@"C:\libraries\nunit\nunit-2.5.7-net-2.0\bin\nunit-console.exe", string.Join(" ", args))
{
UseShellExecute = false,
RedirectStandardOutput = true
}
};
int lineNumber = 0;
p.OutputDataReceived += (s, e) =>
{
//if (!Debugger.IsAttached && !string.IsNullOrWhiteSpace(e.Data) && e.Data.Contains("Test Error"))
//{
// Debugger.Launch();
//}
//string line = e.Data;
string line = string.IsNullOrWhiteSpace(e.Data) ? string.Empty : e.Data.Replace("Test Error", "Test Critical Failure");
Console.WriteLine("[" + (++lineNumber) + "] " + line);
};
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
Console.WriteLine("nunit exited with code " + p.ExitCode);
Environment.Exit(0);
}
我打電話,而不是從生成後事件的NUnit和肯定這個節目不夠有NUnit的錯誤信息,而不調試時字符串'EXEC'。而且,即使在我現在添加到測試輸出中的行號之前,字符串「EXEC」也出現了。當我用字符串'Test Error'跳過所有行時,或者用'Test Critical Failure'等其他內容代替'Test Error'時,項目的構建成功。但是當我添加了以下到它再次失敗項目的生成後事件和項目在Visual Studio錯誤列表窗口中的描述被設置爲「foo.bar」:
echo Test Error : foo.bar
所以無論是視覺Studio或某個擴展似乎會干涉構建,並在Visual Studio輸出窗口中顯示格式爲「測試錯誤:bla.bla」的字符串時使其失敗。據報道整個構建後事件失敗,退出代碼爲-1,即使生成後事件的最後一個命令將errorlevel設置爲某個其他值。現在是公平的,我不知道這是否適用於標準的Visual Studio 2010版或一些擴展,使只要是安全的,這是我的整個環境:
微軟的Visual Studio 2010版本10.0.40219。1 SP1Rel微軟
.NET Framework版本4.0.30319 SP1Rel
安裝的版本:專業
Microsoft Office開發人員工具
的Microsoft Visual Basic 2010
的Microsoft Visual C#2010
微軟的Visual C++ 2010
的Microsoft Visual F# 2010
Microsoft Visual Studio 2010團隊資源管理器
Microsoft Visual Web Developer 2010
添加引用對話框P LU的! 1.0
AlignAssignments 1.0
AutoBraceComplete 1.0
ClearCase中搜索1.0
的Crystal Reports模板用於Microsoft Visual Studio 2010
Devart代碼比較2.70.3
文檔好2010加1.0.10916.0
微軟的Visual Studio 2010專業版 - ENU Service Pack 1的 (KB983509)
微軟的Visual Studio 2010的SharePoint開發工具10.0.40219
Microsoft.VisualStudio.QuickAccess.Package 1.0
OptionsPageImpl 1.0
PowerCommands爲Visual Studio 2010 1.0
快速查找1.0
Rational ClearCase的
視覺NUnit的1.0
VSCommands 2010 3.8.0.0
FeiLoader
ObjectWizard
好了,所以有使用一種解決方法中間人,但如果有人知道一些Visual Studio或擴展設置或修復可以解決這個問題,或者是我的解決方案的更好替代方案,那麼我都是耳朵!
更新:禁用所有擴展和加載項後,問題仍然存在。它開始看起來像一個本地的Visual Studio的特點。
嘗試從Post Build事件中執行批處理文件,並讓該批處理文件執行NUnit並捕獲任何返回代碼。我很好奇你爲什麼不想知道NUnit測試是否失敗? – Bernard 2011-12-23 15:55:17