Не тестируйте свойства, методы, данные и т. Д. Вместо этого опишите поведение, которое вы ищете, и приведите несколько примеров, которые показывают, как вы можете использовать класс.
Вы обнаружите, что большая часть поведения в вашей кодовой базе является ценной, так что вы можете получить высокий уровень охвата таким образом, не выглядя параноиком. (Если это не ценно, удалите его!)
Например, вы могли бы иметь валидатор, который читал бы:
[Test]
public void ShouldOnlyValidateAlphaNamesLessThan50Chars() {
var validator = new Validator();
Assert.IsTrue(validator.validates("An Alpha Name"));
Assert.IsFalse(validator.validates(
"A Really Really Long Name that's 51 characters xx"));
Assert.IsFalse(validator.validates("A name with 1234 numbers"));
}
Этого достаточно, чтобы показать, какое поведение должен иметь валидатор.
Я бы поместил достаточно примеров в каждый метод тестирования, чтобы показать ценный характер кода. Экспериментируйте с этим. Некоторые люди предпочитают «Одно утверждение на тест», но это не должно быть так, если он работает лучше для вас по-другому.
Что касается сторонних библиотек, я подумаю о том, что они для вас делают, что это ценно, а затем оберну их в другой класс, который вы можете макетировать. Moq - мой любимый фреймворк для .NET.
Для тестирования пользовательского интерфейса, особенно для веб-страниц, я бы посмотрел на Selenium.NET. Однако это используется для тестирования всей системы - обычно мы не тестируем элементы пользовательского интерфейса. Это отчасти потому, что это сложно и дорого, а отчасти потому, что на самом деле смотреть на них, использовать их и играть с ними в контексте - это единственный способ проверить, что они ведут себя правильно.
QUnit - это фреймворк, который я видел, который использовался для тестирования Javascript, если вы используете его на своих страницах и хотите это тоже проверить.