Если я тестирую что-то, связанное с ошибкой, возможно, мне захочется сначала увидеть трассировку сообщения или стека в консоли. После того, как я доволен тестом, я, как правило, не хочу, чтобы консоль загромождала все, что могло бы помочь быстро обнаружить и диагностировать неудачный тест. Однако при рефакторинге иногда полезно снова выводить дополнительную информацию. Таким образом, у меня есть много линий, рассеянные о том, что я комментарий/раскомментировать, как:unit test console output
// System.Diagnostics.Debug.WriteLine(msg);
Что такое уборщик способ сделать это?
Приветствия,
Berryl
=== EDIT
Вот пример того, что я имею в виду, обновленный использовать службу журнала согласно предложению Джоша здесь.
Как единичный тест, я хочу утверждать, что ошибка будет отображаться для пользователя, в данном случае, потому что существует дублирующее имя для нового отдела. Я могу и могу автоматизировать то, что сообщение генерируется с правильным контентом.
Сообщение также должно передать базовый тест запаха, который не может быть автоматизирован, хотя это хорошо структурированное предложение, которое большинство пользователей быстро поймут и знают, как исправить? Я не хочу, чтобы запускать ui и заставить пользователя убедиться, что это не просто глупо, поэтому я хочу заглянуть в него, распечатав его. И, как я уже упоминал ранее, это просто шум, за исключением того, что несколько раз сообщение меняется.
[Test]
public void WhenThePropertyIsChanged_IfDuplicateIsFound_DuplicateNameIsPartOfBrokenRuleMessage()
{
const string newName = "Blah";
// force a duplicate
_dao.Stub(x => x.FindByName(newName)).Return(new Department(newName));
var vm = _masterVm.Departments.Last();
vm.Name = newName;
var msg = vm.GetBrokenRules().First().Description;
Log.Service.WriteLine(msg); <=== print it
Assert.That(msg, Is.StringContaining(newName));
Assert.That(vm.BrokenRules.First().Description, Is.EqualTo(msg));
}
Pretty slick. Если бы вы использовали Log4Net в любом случае, вы бы все равно выполняли эту услугу или Log4Net это делали? – Berryl
@Berryl - Я обычно придерживаюсь даже моего стороннего материала за границей интерфейса, поэтому я не получаю «рамки» заблокирован. Я использую Entlib для регистрации, но я все еще использую границы служб, как указано выше. Таким образом, если я когда-либо захочу поменять свою систему ведения журналов на что-то еще, то могу. – Josh