Лучшие практики именования модульных тестов

Мне нравится следовать стандарту unit-tests именования «Следует» для тестов, называя unittest тестовое приспособление после тестируемого модуля unittest (т. е. класса ).

Для иллюстрации unit-testing (с использованием C# и NUnit):

[TestFixture]
public class BankAccountTests
{
  [Test]
  public void Should_Increase_Balance_When_Deposit_Is_Made()
  {
     var bankAccount = new BankAccount();
     bankAccount.Deposit(100);
     Assert.That(bankAccount.Balance, Is.EqualTo(100));
  }
}

Почему unit-tests «Следует»?

Я обнаружил, что это заставляет naming-conventions авторов тестов называть тест unit-test предложением типа «Должен unit-test [быть в каком-то состоянии] [после unittest / до / когда] [действие имеет naming-conventions место]»

Да, написание «следует» повсюду naming-conventions становится немного повторяющимся, но, как unit-test я уже сказал, оно заставляет casing-conventions писателей думать правильно unit-tests (так что может быть полезно unit-testing для новичков). Кроме того, в casing-conventions результате получается удобочитаемое variable-naming название теста на английском variable-naming языке.

Обновить:

Я заметил, что Джимми unittest Богард также является поклонником casing-conventions «следует» и даже имеет библиотеку unit-testing модульных тестов под названием unit-testing Should.

Обновление (4 года спустя ...)

Для тех, кто интересуется, мой variable-naming подход к тестам именования unit-tests изменился с годами. Одна naming-conventions из проблем с шаблоном Должен, которую unit-tests я описал выше, заключается unit-testing в том, что нелегко с первого casing-conventions взгляда узнать, какой метод unit-test тестируется. Для ООП я думаю, что casing-conventions имеет смысл начинать имя variable-naming теста с тестируемого метода. Для unittest хорошо спроектированного casing-conventions класса это должно привести unit-tests к читаемым именам тестовых variable-naming методов. Теперь я использую unit-testing формат, аналогичный _Should_When. Очевидно, что casing-conventions в зависимости от контекста unit-tests вы можете заменить глаголы naming-conventions Should / When на что-то более variable-naming подходящее. Пример: Deposit_ShouldIncreaseBalance_WhenGivenPositiveValue()

unit-testing

naming-conventions

2022-10-29T17:15:40+00:00
Вопросы с похожей тематикой, как у вопроса:

Лучшие практики именования модульных тестов