Naming Unit Tests, который просто вызывает конструктор? - PullRequest
5 голосов
/ 15 мая 2010

Я пытаюсь следовать Соглашению об именовании UnitTests Роя Ошерова , с шаблоном именования: [MethodName_StateUnderTest_ExpectedBehavior].

Следуя этой схеме. Как бы вы назвали тест, вызывающий конструктор?

[Test]
public void ????()
{
    var product = new Product();
    Assert.That(product, Is.Not.Null);
}

Ответы [ 2 ]

12 голосов
/ 17 мая 2010

Constructor_WithoutArguments_Succeeds

7 голосов
/ 15 мая 2010

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

Теперь, если конструктор вашего объекта выдает исключение при некоторых обстоятельствах, вы можете назвать его так:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Product_Constructor_ShouldThrowIfNullArgumentSupplied()
{
    new Product(null);
}

Итак, два возможных случая для кода, который вы тестируете:

  1. Вы получаете экземпляр
  2. Вы получаете исключение

Нет необходимости проверять первый.

...