Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Недвижимость | Ценность |
|---|---|
| Идентификатор правила | MSTEST0063 |
| Заголовок | Тестовые классы должны иметь допустимые конструкторы |
| Категория | Usage |
| Исправление является разрушающим или неразрушающим | Non-breaking |
| Включен по умолчанию | Да |
| Серьезность по умолчанию | Предупреждение |
| представлено в версии | 4.1.0 |
| Существует ли исправление кода | нет |
Причина
У тестового класса нет допустимого конструктора. Допустимыми конструкторами являются public либо без параметров, либо с одним параметром типа TestContext.
Описание правила
Тестовые классы должны иметь публичный конструктор, который либо не имеет параметров, либо принимает один параметр TestContext. Это позволяет тестовой платформе правильно создавать экземпляры тестового класса.
Конструкторы, не являющиеся общедоступными, имеют параметры неподдерживаемых типов или имеют несколько параметров, недопустимы и препятствуют созданию экземпляров тестового класса.
[TestClass]
public class MyTestClass
{
private MyTestClass() // Violation - constructor is not public
{
}
}
[TestClass]
public class MyTestClass
{
public MyTestClass(string value) // Violation - parameter type is not supported
{
}
}
[TestClass]
public class MyTestClass
{
public MyTestClass(TestContext testContext, int value) // Violation - multiple parameters
{
}
}
Устранение нарушений
Убедитесь, что тестовый класс имеет корректный конструктор. Допустимым конструктором должен быть:
- Объявлен как
public. - Либо не имеет параметров, либо принимает один параметр TestContext.
Конструктор без параметров
[TestClass]
public class MyTestClass
{
public MyTestClass()
{
}
[TestMethod]
public void TestMethod()
{
}
}
Конструктор с помощью TestContext
[TestClass]
public class MyTestClass
{
private readonly TestContext _testContext;
public MyTestClass(TestContext testContext)
{
_testContext = testContext;
}
[TestMethod]
public void TestMethod()
{
_testContext.WriteLine("Test is running...");
}
}
Неявный конструктор без параметров
Если конструктор не определен, компилятор автоматически создает открытый конструктор без параметров:
[TestClass]
public class MyTestClass
{
[TestMethod]
public void TestMethod()
{
}
}
Допустимые и недопустимые конструкторы вместе
Если у тестового класса несколько конструкторов, по крайней мере один должен быть допустимым:
[TestClass]
public class MyTestClass
{
public MyTestClass() // Valid - this makes the class valid
{
}
private MyTestClass(int x) // Invalid, but ignored because a valid constructor exists
{
}
[TestMethod]
public void TestMethod()
{
}
}
Когда следует подавлять предупреждения
Не подавляйте предупреждения из этого правила. Тестовые классы без допустимых конструкторов не могут быть созданы платформой тестирования, и тесты не будут выполняться.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable MSTEST0063
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0063
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0063.severity = none
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".