Я тестирую конструкторы, когда они содержат логику - например, проверка или условная установка частного состояния. Ошибки валидации в конечном итоге выдают исключение из конструктора. Успешное выполнение заканчивается созданием объекта, который демонстрирует определенное поведение в зависимости от состояния, которое было установлено в конструкторе.
В любом случае, это требует тестирования. Но тесты конструктора скучны, потому что все они выглядят одинаково - вызовите конструктор, сделайте утверждение. Объявления методов тестирования часто занимают больше места, чем вся логика тестирования ... Поэтому я написал простую библиотеку тестирования, которая помогает писать декларативные тесты для конструкторов: Как легко тестировать логику проверки в конструкторах в C #
Вот пример, в котором я пробую семь тестовых примеров на конструкторе одного класса:
[TestMethod]
public void Constructor_FullTest()
{
IDrawingContext context = new Mock<IDrawingContext>().Object;
ConstructorTests<Frame>
.For(typeof(int), typeof(int), typeof(IDrawingContext))
.Fail(new object[] { -3, 5, context }, typeof(ArgumentException), "Negative length")
.Fail(new object[] { 0, 5, context }, typeof(ArgumentException), "Zero length")
.Fail(new object[] { 5, -3, context }, typeof(ArgumentException), "Negative width")
.Fail(new object[] { 5, 0, context }, typeof(ArgumentException), "Zero width")
.Fail(new object[] { 5, 5, null }, typeof(ArgumentNullException), "Null drawing context")
.Succeed(new object[] { 1, 1, context }, "Small positive length and width")
.Succeed(new object[] { 3, 4, context }, "Larger positive length and width")
.Assert();
}
Таким образом, я могу тестировать все соответствующие случаи для моего конструктора, не набирая много.