Partilhar via


Usando a Classes Assert

Use as classes Assert do namespace UnitTestingFramework para verificar a funcionalidade específica. Um método de teste de unidade executa o código de um método no seu código de desenvolvimento, mas ele reporta sobre aspectos do comportamento do código somente se você incluir instruções Assert.

ObservaçãoObservação

Com ou sem instruções Assert, testes de unidade podem gerar dados de cobertura de código. Para obter mais informações, consulte Como: Obter dados de cobertura de código.

Tipos de Asserts

O Microsoft.VisualStudio.TestTools.UnitTesting namespace fornece vários tipos de classes Assert:

Assert

No seu método de teste, você pode chamar qualquer número de métodos da classe Assert, tais como Assert.AreEqual(). A classe Assert tem vários métodos disponíveis, e muitos desses métodos têm várias sobrecargas.

CollectionAssert

Use a classe CollectionAssert para comparar conjuntos de objetos, e para verificar o estado de uma ou mais coleções.

StringAssert

Use a classe StringAssert para comparar strings. Essa classe contém uma variedade de métodos úteis, como StringAssert.Contains, StringAssert.Matches, e StringAssert.StartsWith.

AssertFailedException

A exceção AssertFailedException é lançada sempre que um teste falhar. Um teste falhará se ele expirar, lançar uma exceção inesperada, ou contiver uma instrução Assert que produz um resultado de falha.

AssertInconclusiveException

AssertInconclusiveException é lançada sempre que um teste produz um resultado inconclusivo. Normalmente, você adiciona uma instrução Assert.Inconclusive em um teste no qual você ainda está trabalhando para indicar que ele ainda não está pronto para ser executado.

ObservaçãoObservação

Uma estratégia alternativa deve ser marcar um teste que não está pronto para executar com o atributo Ignore. Entretanto, isso tem a desvantagem de você não poder gerar facilmente um relatório sobre o número de testes que você tenha deixado de implementar.

UnitTestAssertException

Se você escrever uma nova classe de exceção Assert, se essa classe herdar da classe base UnitTestAssertException, é mais fácil identificar a exceção como um erro de declaração em vez de uma exceção inesperada lançada de seu código de teste ou produção.

ExpectedExceptionAttribute

Decore um método teste com o atributo ExpectedExceptionAttribute quando você desejar que o método teste verifique que uma exceção que você espera que seja lançada por um método no seu código desenvolvimento seja, na verdade, lançada nesse método.

Sobrecarregando Tipos Inseguros com Assert.AreEqual

O método Assert.AreEqual tem muitas sobrecargas que permitem que você compare tipos dados específicos. Entretanto, o método Assert.AreEqual não tem uma sobrecarga para tipos inseguros, tais como o tipo de dados ponteiro.

Para ilustrar isso, crie um aplicativo de console C# que contenha a seguinte classe:

unsafe public class CUnsafeTest
{
    private int* m_pX = null;
    unsafe public void VoidPtr(void* voidPtr)
    {
    }
    unsafe public int* ReturnPointer(float* fPtr, TestThis* pTestThis)
    {
        int x = 5;
        return &x;
    }
}

Agora gere testes para a classe CunsafeTest. Você verá código gerado semelhante ao exemplo a seguir:

[TestMethod()]
public void ReturnPointerTest()
{
    unsafe
    {
        CodeGen.BVT.Unsafe.CUnsafeTest target;
        target = new CodeGen.BVT.Unsafe.CUnsafeTest();
        //  TODO: Initialize to an appropriate value
        System.Single* fPtr = null;
        //  TODO: Initialize to an appropriate value
        TestThis* pTestThis = null;
        //  TODO: Initialize to an appropriate value
        System.Int32* expected = null;
        System.Int32* actual;
        actual = target.ReturnPointer(fPtr, pTestThis);
        Assert.AreEqual(actual, expected);
            // On the preceding line, no overload is available. 
    }
}

Nesse caso, você deve substituir a instrução Assert.AreEqual pelo seu próprio código personalizado de verificação.

Consulte também

Referência

Microsoft.VisualStudio.TestTools.UnitTesting

Conceitos

Criando e executando testes de unidade para o código existente