Стандартов как таковых не существует, разные люди / места будут иметь разные схемы. Важно то, что вы придерживаетесь стандарта.
Лично я фанат следующего - пример кода на C #, но очень близко к Java, применяются те же правила:
[Test]
public void person_should_say_hello()
{
// Arrange
var person = new Person();
// Act
string result = person.SayHello();
// Assert
Assert(..., "The person did not say hello correctly!");
}
Явные
Имя теста должно содержать название тестируемого класса. В этом примере проверяется класс Person
. Имя теста также должно содержать название метода, который тестируется. Таким образом, если тест провалится, вы по крайней мере будете знать, где его искать. Я также рекомендую следовать правилу AAA - Arrange, Act, Assert , это обеспечит легкость чтения и выполнения ваших тестов.
Дружественные сообщения об ошибках
Когда дело доходит до утверждения результата / состояния, полезно включить дополнительное сообщение. Это облегчает работу при сбое теста, особенно при запуске в процессе сборки или с помощью внешнего инструмента.
1024 * Подчеркивает *
Последняя (хотя и необязательная) позиция, которую я придерживаюсь, заключается в использовании подчеркивания для названий тестов. Хотя я не поклонник подчеркиваний в производственном коде, их использование в именах тестов полезно, поскольку имена тестов часто намного длиннее. Быстрый взгляд на название теста, в котором используются подчеркивания, оказывается намного более читабельным, хотя это субъективно и является источником многих споров в отношении практики модульного тестирования.
Интеграционные тесты
Те же стандарты применяются к интеграционным тестам, единственное отличие состоит в том, что такие тесты должны быть отделены от модульных тестов. В приведенном выше примере кода тестовый класс будет называться PersonTests
и находится в файле с именем PersonTests.cs
. Интеграционные тесты были бы названы аналогичным образом - PersonIntegrationTests
, расположенный в PersonIntegrationTests.cs
. Для этих тестов можно использовать один и тот же проект, но убедитесь, что они находятся в отдельных каталогах.