Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | MSTEST0063 |
| Título | As classes de teste devem ter construtores válidos |
| Categoria | Usage |
| A correção é invasiva ou não invasiva | Non-breaking |
| Ativado por padrão | Yes |
| Severidade padrão | Advertência |
| Introduzido na versão | 4.1.0 |
| Existe uma correção de código | Não |
Motivo
Uma classe de teste não tem um construtor válido. Construtores válidos são public e ou sem parâmetros ou têm um único parâmetro do tipo TestContext.
Descrição da regra
As classes de teste devem ter um construtor público que seja sem parâmetros ou aceite um único TestContext parâmetro. Isto permite que o framework de teste instancie corretamente a classe de teste.
Construtores que são não públicos, têm parâmetros de tipos não suportados ou múltiplos parâmetros não são válidos e impedem o framework de teste de criar instâncias da classe de teste.
[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
{
}
}
Como corrigir violações
Assegura-te de que a tua classe de teste tem um construtor válido. Um construtor válido deve ser:
- Declarado como
public. - Ou sem parâmetros ou aceita um único TestContext parâmetro.
Construtor sem parâmetros
[TestClass]
public class MyTestClass
{
public MyTestClass()
{
}
[TestMethod]
public void TestMethod()
{
}
}
Construtor com TestContext
[TestClass]
public class MyTestClass
{
private readonly TestContext _testContext;
public MyTestClass(TestContext testContext)
{
_testContext = testContext;
}
[TestMethod]
public void TestMethod()
{
_testContext.WriteLine("Test is running...");
}
}
Construtor implícito sem parâmetros
Se não definir nenhum construtor, o compilador gera automaticamente um construtor público sem parâmetros:
[TestClass]
public class MyTestClass
{
[TestMethod]
public void TestMethod()
{
}
}
Construtores válidos e inválidos juntos
Se a sua classe de teste tiver múltiplos construtores, pelo menos um deve ser válido:
[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()
{
}
}
Quando suprimir avisos
Não suprima avisos desta regra. Classes de teste sem construtores válidos não podem ser instanciadas pelo framework de teste, e os testes não são executados.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable MSTEST0063
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0063
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0063.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.