Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Правила использования поддерживают правильное использование атрибутов, методов и шаблонов 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 для проверок платформы.