Бөлісу құралы:


Правила проектирования MSTest

Правила проектирования помогают создавать и поддерживать наборы тестов, которые соответствуют правильному проектированию и рекомендациям. Эти правила сосредоточены на структуре тестирования, рекомендациях и распространенных шаблонах, которые приводят к поддерживаемому коду теста.

Правила в этой категории

Идентификатор правила Название Severity Исправление доступно
MSTEST0004 Общедоступные типы должны быть тестовыми классами. Info Да
MSTEST0006 Избегайте атрибута ExpectedException. Info Да
MSTEST0015 Метод тестирования не должен игнорироваться. Нет (по желанию) нет
MSTEST0016 Тестовый класс должен иметь метод тестирования. Info нет
MSTEST0019 Предпочитайте TestInitialize над конструкторами. Нет (по желанию) Да
MSTEST0020 Предпочитайте использовать конструкторы вместо TestInitialize. Нет (по желанию) Да
MSTEST0021 Предпочитайте метод Dispose, а не TestCleanup. Нет (по желанию) Да
MSTEST0022 Предпочитайте TestCleanup по сравнению с Dispose. Нет (по желанию) Да
MSTEST0025 Предпочитайте Assert.Fail вместо условий, которые всегда ложны. Info Да
MSTEST0029 Общедоступный метод должен быть методом тестирования. Info Да
MSTEST0036 Не используйте тень. Предупреждение нет
MSTEST0044 Предпочитайте TestMethod для DataTestMethod. Info Да
MSTEST0045 Используйте совместную отмену для таймаута. Info Да

Распространенные сценарии

Структура тестового класса

При создании тестового класса эти правила помогают обеспечить правильную структуру:

  • MSTEST0004. Сохранение внутренних вспомогательных классов, только тестовые классы должны быть общедоступными.
  • MSTEST0016. Убедитесь, что тестовые классы содержат по крайней мере один метод теста.
  • MSTEST0029. Общедоступные методы в классах тестирования должны быть методами тестирования.

Шаблоны инициализации

MSTest поддерживает как конструкторы, так и методы TestInitialize. Эти взаимоисключающие правила позволяют применять согласованный шаблон:

  • MSTEST0019. Принудительное применение TestInitialize для инициализации (полезно для асинхронных сценариев).
  • MSTEST0020: Обязательное использование конструкторов для инициализации (лучше для полей только для чтения).

Шаблоны очистки

Аналогичным образом выберите между "Dispose" и "TestCleanup":

  • MSTEST0021: Обеспечить применение паттерна Dispose для очистки.
  • MSTEST0022: Требуется использовать TestCleanup для очистки.

Лучшие утверждения

  • MSTEST0006. Используйте Assert.ThrowsExactly вместо [ExpectedException] для повышения точности.
  • MSTEST0025: используйте Assert.Fail вместо Assert.IsTrue(false).

Качество теста

  • MSTEST0015: Помечать игнорируемые тесты (правило по выбору).
  • MSTEST0036. Избегайте тени членов базового класса.
  • MSTEST0044. Используйте TestMethod, если не требуется тестирование на основе данных.
  • MSTEST0045: Включите токены отмены для обработки времени ожидания.