Если я тестирую что-то, связанное с ошибкой, возможно, мне захочется сначала увидеть сообщение или трассировку стека в консоли.После того, как я удовлетворен тестом, я обычно не хочу, чтобы консоль была загромождена чем-то, что могло бы помочь быстро обнаружить и диагностировать провал теста.Однако при рефакторинге иногда бывает полезно еще раз вывести дополнительную информацию.Поэтому у меня разбросано множество строк о том, что я комментирую / раскомментирую, например:
// System.Diagnostics.Debug.WriteLine(msg);
Какой более чистый способ сделать это?
Cheers,
Berryl
=== РЕДАКТИРОВАТЬ
Вот пример того, что я имею в виду, обновленный для использования службы журнала в соответствии с предложением Джоша.
В качестве модульного теста я хочу заявить, чтоошибка будет отображаться пользователю, в этом случае, потому что есть дублирующее имя для нового отдела.Я могу и действительно автоматизировать, чтобы сообщение генерировалось с правильным содержанием.
Сообщение также должно пройти базовый тест на запах, который не может быть автоматизирован, хотя это хорошо структурированное предложение, которое большинство пользователей будетбыстро понять и уметь исправить?Я не хочу запускать пользовательский интерфейс и заставлять пользователя следить за тем, чтобы он не был глупым, поэтому я хочу посмотреть на это, распечатав.И, как я упоминал ранее, это всего лишь шум, за исключением нескольких раз, когда сообщение меняется.
[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));
}