Atributos

Quando criamos um teste unitário pelo assistente ou manual alguns atributos são inseridos veremos os principais a seguir.

[TestClass()]
Esse atributo identifica que a classe será uma classe de teste.

[ClassInitialize()]
O método que possui esse atributo é inicializado antes do primeiro método, como se fosse um construtor da classe, nesse atributo iniciamos propriedades e classe para utilização dos testes.

[TestInitialize()]
Esse atributo decorado nos métodos é inicializado antes de cada teste

[ClassCleanup()]
O método decorado como esse atributo funciona como um destrutor, nesses métodos é utilizado para limpar e destruir objetos ou fechar conexões, ele é executado após a execução de todos os métodos. Só poderá ter um método decorado com esse atributo. 

[TestCleanup()]
Esse atributo decorado no método funciona semelhante ao ClassCleanup, mas é executado ao termino de cada teste.

[TestMethod]
Esse atributo identifica o método como o teste realmente em si, é nesse método que executaremos e validamos os testes unitários.

Recomenda-se o uso dos atributos TestCleanup e ClassCleanup, para finalizar objetos, já que podemos ter acesso a banco de dados e deixar conexões abertas podem trazer resultados inesperado.

Assert

O classe Assert é uma das mais importantes, em se tratando de testes unitários, essa classe pertence ao Namespace  Microsoft.VisualStudio.TestTools.UnitTesting, e vai comparar, analisar resultados esperados e informando se deu certo ou não. Essa classe possui vários métodos e seus métodos vários construtores para que seja testados vários valores, vejam alguns construtores para essa classe.

Assert.AreEqual
Verifica se o valor esperado é o mesmo que retornado

Assert.AreNotEqual
Espera valores diferentes tanto no esperado como no retornado.

Assert.AreSame
Verifica se as variáveis pertencem ao mesmo objeto

Assert.Inconclusive
Verifica se a afirmação pode ou não ser verificada.

A Classe Assert possui outros métodos como analisar se o retorno de um valor é null ou não, se é falso ou não, se o objeto de retorno tem um tipo especifico.

Alem da classe Assert temos algumas classes bem úteis para testes unitários vejam algumas delas

StringAssert

Essa classe como o nome já diz trata de string ela possui vários métodos, dentre eles:

StringAssert.Contains, que verifica se existe uma pequena palavra dentro de uma frase, ou uma letra dentro de uma palavra, ou seja analisa se a string existe dentro de outra.

CollectionAssert
Classe para tratar coleções, verifica se existem valores null dentro de uma coleção, se são valores iquivalentes, se existem um valor dentro da coleção. Essa coleção precisa implementar a interface ICollection.