for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } /// <summary> ///A test for isEmail ///</summary> [TestMethod()] public void isEmailTest() { Text target = new Text(); // TODO: Initialize to an appropriate value string pStrEmail = string.Empty; // TODO: Initialize to an appropriate value bool expected = false; // TODO: Initialize to an appropriate value bool actual; actual = target.isEmail(pStrEmail); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); } /// <summary> ///A test for GetDelimitator ///</summary> [TestMethod()] public void GetDelimitatorTest() { Text target = new Text(); // TODO: Initialize to an appropriate value char expected = '\0'; // TODO: Initialize to an appropriate value char actual; actual = target.GetDelimitator(); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); } /// <summary> ///A test for Text Constructor ///</summary> [TestMethod()] public void TextConstructorTest() { Text target = new Text(); Assert.Inconclusive("TODO: Implement code to verify target"); } } } Se observarmos a classe unit test acima, facilmente identificamos suas diferencas se compararmos com uma classe basica (como no exemplo da classe Text que criamos no projeto Text Validation). A classe possui o atributo [TestClass], identificando que e uma classe de testes e cada metodo tambem possui um atributo [TestMethod] identificando o metodo como sendo de testes. [2] Outro ponto importante e observar que o namespace (using Microsoft.VisualStudio.TestTools.UnitTesting; ) importado na nossa classe de teste e utilizado para disponibilizar diversas funcionalidades de testes que podem ser usadas na classe do seu unit test. Esse namespace disponibiliza tambem a classe Assert, que dispoe de diversos metodos estaticos para validacao e execucao dos testes. O metodo AreEqual, por exemplo, em uma de suas sobrecargas, recebe por parametro o valor esperado da execucao do teste e o valor que sera enviado para validacao de acordo com o metodo chamado como exemplo abaixo: [TestMethod()] public void GetDelimitatorTest() { Text target = new Text(); // TODO: Initialize to an appropriate value char expected = '\0'; // TODO: Initialize to an appropriate value char actual; actual = target.GetDelimitator(); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); } Alem da criacao das classes de teste, ainda e possivel executa-las, saber o resultado e armazena-las para comparacao posterior. Agora vamos executar todos os testes criados sem alterar uma linha de codigo para ver qual sera o resultado. Para isso, acesse o menu Test / Windows / Test List Editor. Em seguida selecione todos os testes habilitando o checkbox ao lado esquerdo do teste e click na opcao Run Checked Tests como mostrado na imagem abaixo. Apos a execucao dos testes voce ira perceber que os testes nao tiveram seu resultado como Passed, afinal, nao fizemos nenhuma alteracao do codigo e isso era o esperado. Neste caso, tivemos 2 testes com o resultado Inconclusive e 1 com o resultado Failed como podemos observar o resultado da nossa execucao abaixo. Como o nosso objetivo e ter todos os casos de teste unitario com o resultados Passed, vamos fazer as devidas alteracoes para testar o que queremos. Primeiro, vamos alterar o TestMethod