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


Правила использования MSTest

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

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

Идентификатор правила Название Severity Исправление доступно
MSTEST0002 Тестовый класс должен быть допустимым. Предупреждение Да
MSTEST0003 Метод теста должен быть допустимым. Предупреждение об ошибке →* Да
MSTEST0005 TestContext должен быть допустимым. Предупреждение Да
MSTEST0007 Используйте атрибут для метода тестирования. Предупреждение нет
MSTEST0008 TestInitialize должен быть допустимым. Предупреждение Да
MSTEST0009 TestCleanup должен быть допустимым. Предупреждение Да
MSTEST0010 ClassInitialize должен быть корректным. Предупреждение Да
MSTEST0011 КлассCleanup должен быть допустимым. Предупреждение Да
MSTEST0012 AssemblyInitialize должна быть допустимой. Предупреждение Да
MSTEST0013 CleanupAssembly должна быть допустимой. Предупреждение Да
MSTEST0014 DataRow должен быть валидным. Предупреждение Да
MSTEST0017 Аргументы ассерций должны быть переданы в правильном порядке. Info Да
MSTEST0018 DynamicData должен быть допустимым. Предупреждение Да
MSTEST0023 Не отменяйте логическое утверждение. Info Да
MSTEST0024 Не сохраняйте статический TestContext. Предупреждение нет
MSTEST0026 Утверждения args должны избежать условного доступа. Info нет
MSTEST0030 Тип, содержащий метод теста, должен быть классом теста. Предупреждение Да
MSTEST0031 Не используйте System.ComponentModel.DescriptionAttribute. Info Да
MSTEST0032 Проверьте условие утверждения always-true. Info нет
MSTEST0034 Используйте ClassCleanupBehavior.EndOfClass. Info Да
MSTEST0035 Используйте DeploymentItem с методом тестирования или классом теста. Info нет
MSTEST0037 Используйте правильные методы утверждения. Info Да
MSTEST0038 Избегайте Assert.AreSame с типами значений. Info Да
MSTEST0039 Используйте более новые методы Assert.Throws. Info Да
MSTEST0040 Избегайте использования операторов assert в контексте async void. Предупреждение нет
MSTEST0041 Используйте атрибуты на основе условий с классом тестирования. Предупреждение нет
MSTEST0042 Дубликат строки данных. Предупреждение нет
MSTEST0043 Используйте атрибут повторных попыток в методе тестирования. Предупреждение об ошибке →* Да
MSTEST0046 Используйте Assert вместо StringAssert. Info Да
MSTEST0048 Использование свойства TestContext. Предупреждение нет
MSTEST0049 Потоковый тест контекста отмены CancellationToken. Info Да
MSTEST0050 Глобальная тестовая оснастка должна быть действительной. Предупреждение Да
MSTEST0051 Assert.Throws должен содержать одну инструкцию. Info Да
MSTEST0052 Избегайте явного использования DynamicDataSourceType. Info Да
MSTEST0053 Избегайте параметров формата Assert. Info Да
MSTEST0054 Используйте свойство CancellationToken. Info Да
MSTEST0055 Не игнорируйте возвращаемое значение метода строки. Предупреждение нет
MSTEST0056 TestMethodAttribute должен правильно задать DisplayName. Info Да
MSTEST0057 TestMethodAttribute должен распространять исходные сведения. Предупреждение нет
MSTEST0058 Избегайте утверждений в блоках catch. Info нет
MSTEST0059 Правильно используйте атрибут Parallelize. Предупреждение нет
MSTEST0060 Дублирующийся TestMethodAttribute. Предупреждение Да
MSTEST0061 Вместо проверки среды выполнения используйте атрибут OSCondition. Info Да
MSTEST0062 Избегайте параметров метода тестирования out/ref. Предупреждение Да
MSTEST0063 Тестовый класс должен иметь допустимый конструктор. Предупреждение нет

* Переведено в режим ошибки в Recommended и All режимах.

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

Проверка структуры тестирования

Убедитесь, что тестовые классы, методы и фикстуры соответствуют требованиям MSTest.

  • MSTEST0002: требования к макету класса тестирования (например, общедоступные, нестатические).
  • MSTEST0003: Требования к макету метода тестирования (️⚠ повышено до уровня ошибки).
  • MSTEST0030. Методы с [TestMethod] должны находиться в [TestClass].
  • MSTEST0063: проверка конструктора тестового класса.

Методы жизненного цикла

Проверьте методы инициализации и очистки:

  • MSTEST0008: проверка TestInitialize.
  • MSTEST0009: проверка TestCleanup.
  • MSTEST0010: проверка ClassInitialize.
  • MSTEST0011: проверка ClassCleanup.
  • MSTEST0012: проверка AssemblyInitialize.
  • MSTEST0013: проверка AssemblyCleanup.
  • MSTEST0034: Установите ClassCleanupBehavior.EndOfClass.
  • MSTEST0050: валидация глобальной тестовой фикстуры.

Тестирование на основе данных

Убедитесь, что атрибуты данных используются правильно:

  • MSTEST0007. Атрибуты данных должны находиться в методах тестирования.
  • MSTEST0014: проверка DataRow.
  • MSTEST0018: валидация DynamicData.
  • MSTEST0042: Обнаружить повторяющиеся строки данных.
  • MSTEST0052. Используйте autoDetect для DynamicDataSourceType.
  • MSTEST0062: Избегайте параметров out/ref.

Написание лучших утверждений

Правила правильного и эффективного использования утверждений:

  • MSTEST0017: передайте ожидаемое и фактическое в правильном порядке.
  • MSTEST0023: не отменяйте условия (используйте Assert.IsFalse напрямую).
  • MSTEST0026. Избегайте операторов, допускающих значение NULL, в утверждениях.
  • MSTEST0032: Просмотр всегда истинных условий.
  • MSTEST0037. Используйте наиболее подходящий метод утверждения.
  • MSTEST0038. Не используйте AreSame с типами значений.
  • MSTEST0039: Используйте метод Assert.ThrowsExactly (более новый API).
  • MSTEST0046: Предпочтительно использовать Assert вместо StringAssert.
  • MSTEST0051: Assert.Throws должен тестировать одну инструкцию.
  • MSTEST0053. Вместо параметров форматирования используйте интерполяцию строк.
  • MSTEST0058. Не помещайте утверждения в блоки catch.

Использование TestContext

Правильное использование объекта TestContext:

  • MSTEST0005: проверка свойства TestContext.
  • MSTEST0024. Не сохраняйте TestContext в статических полях.
  • MSTEST0048: ограниченный доступ к свойствам в фикстурах.
  • MSTEST0049. Маркеры отмены потока из TestContext.
  • MSTEST0054. Используйте свойство TestContext.CancellationToken.

Асинхронные шаблоны

Правила асинхронного тестового кода:

  • MSTEST0040: Избегайте использования утверждений в методах async void.

Конфигурация теста

  • MSTEST0031. Используйте правильные атрибуты (не System.ComponentModel.Description).
  • MSTEST0035: использование DeploymentItem.
  • MSTEST0041. Атрибуты условий должны находиться в тестовых классах.
  • MSTEST0043: атрибуты повторных попыток должны находиться в методах тестирования (️⚠ переросло в error).
  • MSTEST0055. Не игнорируйте возвращаемые значения строкового метода.
  • MSTEST0056. Правильно задайте displayName в TestMethodAttribute.
  • MSTEST0057: Передача исходной информации в пользовательском TestMethodAttribute.
  • MSTEST0059. Не используйте parallelize и DoNotParallelize.
  • MSTEST0060. Избегайте дублирования TestMethodAttribute.
  • MSTEST0061. Используйте атрибут OSCondition для проверок платформы.