ну наконец-то дошли руки это исправить. как оказалось, уровни ошибок не имеют ничего общего с этой конкретной проблемой. вместо этого формат текста, который попадает в окно вывода Visual Studio, кажется первостепенным...
неудачные тесты NUnit отображались в окне списка ошибок Visual Studio с описанием элемента, установленным в пространство имен и имя метода сообщения об ошибке NUnit, а в файле — загадочная строка «EXEC». если вы откроете окно вывода, эта же строка «EXEC» также присутствует в начале сообщения об ошибке NUnit. но это не часть исходного сообщения об ошибке 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» оказалась даже перед номерами строк, которые я теперь добавлял в тестовый вывод. когда я пропустил все строки со строкой «Ошибка теста» или заменил «Ошибка теста» чем-то еще, например «Критический сбой теста», сборка проекта прошла успешно. но когда я добавил следующее к событию проекта после сборки, он снова потерпел неудачу, и описание элемента в окне списка ошибок Visual Studio было установлено на «foo.bar»:
echo Test Error : foo.bar
поэтому либо Visual Studio, либо какое-то расширение, по-видимому, вмешиваются в сборку и приводят к ее сбою, как только в окне вывода Visual Studio появляется строка с форматом «Ошибка теста: bla.bla». Сообщается, что все событие после сборки завершается с ошибкой с кодом выхода -1, даже если последняя команда события после сборки устанавливает для уровня ошибки какое-либо другое значение. теперь, чтобы быть честным, я не уверен, относится ли это к стандартной версии Visual Studio 2010 или некоторому расширению, поэтому на всякий случай это вся моя среда:
Microsoft Visual Studio 2010 версии 10.0.40219.1 SP1Rel Microsoft
.NET Framework версии 4.0.30319 SP1Rel
Установленная версия: Professional
Инструменты разработчика Microsoft Office
Microsoft Visual Basic 2010
Microsoft Visual C# 2010
Microsoft Visual C++ 2010
Microsoft Visual F# 2010
Microsoft Visual Studio 2010 Team Explorer
Microsoft Visual Web Developer 2010< br> Добавить справочный диалог Plus! 1.0
AlignAssignments 1.0
AutoBraceComplete 1.0
ClearCase Search 1.0
Шаблоны Crystal Reports для Microsoft Visual Studio 2010
Devart Code Compare 2.70.3
Document Well 2010 Plus 1.0.10916.0
Microsoft Visual Studio 2010 Professional — ENU с пакетом обновления 1 (KB983509)
Инструменты разработчика Microsoft Visual Studio 2010 SharePoint 10.0.40219
Microsoft.VisualStudio.QuickAccess.Package 1.0
OptionsPageImpl 1.0
PowerCommands для Visual Studio 2010 1.0
QuickFind 1.0
Rational ClearCase
Visual Nunit 1.0
VSCommands 2010 3.8.0.0
FeiLoader
ObjectWizard
Итак, есть обходной путь с использованием посредника, но если есть кто-то, кто знает какой-либо параметр или исправление Visual Studio или расширения, которое решит эту проблему, или лучшую альтернативу моему решению, то я все уши!
ОБНОВЛЕНИЕ: после отключения всех расширений и надстроек проблема сохраняется. это начинает выглядеть как особенность Visual Studio.
person
mtijn
schedule
02.01.2012