2012-06-17 3 views
6

Привет всем Я делаю шахматный AI в качестве хобби проекта с Test Driven Development. Но по какой-то причине единственное сообщение, которое дают мои тесты, это «тест выкинул исключение: ...». И, следовательно, опускать единственное, что имеет значение. Вместо прямого чтения ошибки я теперь должен щелкнуть правой кнопкой мыши и просмотреть результаты результатов теста. Я попытался добавить и удалить столбцы, но я не могу получить прямое отображение всего сообщения.Исключить блок, но не может видеть сообщение

Можно настроить VS2010, чтобы сообщение об исключении отображалось непосредственно для каждого модульного теста?

редактировать: Я использую Стандаард VS модульных тестов:

[TestClass] 
public class MiniMaxTest 
{ 
    [TestMethod] 
    public void TestConstructor() 
    { 
     throw new Exception("Must I click view details to see this?"); 
    } 
} 

Почему эти вопросы? Вы, ребята, можете воспроизвести эти вещи. Тесты отладки или запуска дают те же самые сообщения: exception message remains hidden

+2

Не могли бы вы предоставить более подробную информацию? Например, какую платформу тестирования вы используете (MSTest)? Как выглядят ваши тесты? – stakx

+1

Вы используете MSTest? Если вы не указали свой инструмент тестирования устройства. Также почему вы просто не отлаживаете свой тестовый метод? – BrokenGlass

+0

Если я понял это правильно, вы говорите, что поле или столбец, который показывает сообщение, слишком короткий, чтобы отобразить все исключение? Ну, модульные тесты не должны постоянно терпеть неудачу, поэтому «щелкать, чтобы увидеть детали» раз в то время не должно быть такой большой сделки? – Groo

ответ

2

Нет, я не верю, что вы можете настроить VS, чтобы показать его по-разному. В IDE показана первая строка сообщения об исключении, и в тексте полного текста есть символ новой строки, поэтому вам нужно щелкнуть по ним, чтобы просмотреть все это.

Что вы, , может, тем не менее, нарушает структуру MSTest, чтобы показать свои собственные сообщения.

MS Test Assertions реализованы путем исключения исключений. Все функции MS Test Assert выполняют исключения, полученные из UnitTestAssertException. Visual Studio имеет специальную обработку для этих видов исключений.

Например: Если вы пишете этот тест:

[TestMethod] 
public void AllAboard() 
{ 
    throw new AssertFailedException("Failboat"); 
} 

AssertFailedException является стандартным базовым классом для большинства других сбоев утверждений.

Вы заметите, что VS2010 не напечатайте сообщение об ошибке «тест бросил исключение», вместо этого он просто печатает «Failboat».

Теперь, что вы можете сделать, это окружить ваши тесты вещами, которые преобразуют обычные исключения в AssertFailedException, а затем вы можете печатать любые сообщения, которые вам нравятся.

[TestMethod] 
public void TestStuff() 
{ 
    try 
    { 
     string o = null; // pretend this came from some real code 
     var x = o.Split(new[] { ',' }); // this will throw NullRefException 
    } 
    catch (Exception e) 
    { 
     throw new AssertFailedException(e.Message, e); 
    } 
} 

Конечно, я не рекомендовал бы на самом деле делать это ... это многословным, и что более важно, вы потеряете стек вызовов ... но эй, теперь у вас есть еще один инструмент в вашем получениях

+0

+1 Для жизнеспособного решения, но я согласен, что это похоже на overkill – Basic

+0

@Basic да, я полностью не сделал бы этого, но VS не дает вам никаких вариантов ... так что если вы reaaaaaaaaaaaally хотите изменить сообщения, это что вы должны делать :-) –