Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Правила использования поддерживают правильное использование атрибутов, методов и шаблонов 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 для проверок платформы.