好,终于得到全面修复此。事实证明,错误级别与这个特定问题无关。相反,最终在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