Este tópico descreve o passo-a-passo o processo de criação mais simples de teste de unidade no Microsoft Visual Studio 2010 (C#) para Aplicação de Consola. Usando este exemplo, você pode aprender como criar seus próprios testes de unidade. O exemplo também demonstra como usar a classe Assert para teste.
Conteúdo
- Task
- Instruções
- 1. Crie um aplicativo usando o modelo de aplicativo do Console
- 2. Preparando o texto do programa.módulo cs
- 2.1. Adicionando a função Min ()
- 2.2. Tornar pública a classe do programa
- 3. Listagem do programa em teste
- 4. Criando um teste
- 4.1. Adicionando um novo projeto à solução
- 4.2. Estrutura da solução
- 4.3. Código do programa de ” UnitTest1.arquivo “cs”. Atributos e
- 4.4. Fazendo alterações no texto UnitTest1.módulo cs. Alterando o nome do método de teste
- 4.5. Conectando o projeto MinApp ao Projeto TestMinApp
- 4.6. Modificação do UnitTest1.texto do módulo cs
- 4.6.1. Adicionando o namespace MinApp a UnitTest1.cs
- 4.6.2. Texto do método TestMin()
- 4.7. O texto da UnitTest1.módulo cs
- 5. Execute o teste e verificando o resultado do teste
- 6. Resultado. Interação entre projetos
- tópicos relacionados
pesquise outros sites:
tarefa
para um aplicativo de tipo de aplicativo de Console, desenvolva um teste de unidade que teste a função Min (). Para a função Min (), defina o método de teste TestMin (). Teste o resultado das funções.
instruções
1. Crie um aplicativo usando o modelo de aplicativo do Console
execute o MS Visual Studio 2010. Para criar um projeto usando o modelo de aplicativo do Console, você precisa chamar a seguinte sequência de comando:
File -> New -> Project...
como resultado, a nova janela do projeto é aberta. Na janela, selecione o modelo “Aplicativo Do Console”, conforme mostrado na Figura 1. O modelo é selecionado na Guia Visual C#.
Figura 1. A janela “Novo Projeto”. Selecionando o “aplicativo do Console”
⇑
2. Preparando o texto do programa.módulo cs
2.1. Adicionando a função Min ()
no corpo da classe do programa, você precisa adicionar o texto da função Min (). A função é declarada como pública e estática. O texto da função Min ()
Figura 2. A janela do MS Visual Studio, o módulo ” programa.cs”
⇑
2.2. Torne a classe do programa pública
para acessar a função Min () da classe do programa, você precisa tornar essa classe pública. Para fazer isso, antes da declaração de classe, você precisa definir a palavra-chave pública.
...namespace MinApp{ public class Program { // методы класса // ... }}...
depois disso, o programa testado está pronto.
⇑
3. Listagem do programa em teste
no momento em que o código do programa em teste é o seguinte:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MinApp{ public class Program { public static int Min(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } static void Main(string args) { Console.WriteLine("Demo of Unit-testing in C#."); } }}
como este programa será testado a partir de outro módulo de teste, na função Main (), você não precisa digitar mais nada. Como, de acordo com a condição da tarefa, você precisa testar a operação da função Min (). E isso já será feito a partir do módulo de teste. No momento, nosso programa está pronto para testes.
⇑
4. Criando um teste
o teste é criado por um projeto separado na solução. O programa que você está testando não sabe sobre isso. O programa de teste que testará chama as funções do programa que está sendo testado. No nosso caso, o programa de teste chamará a função
int Min(int, int, int);
⇑
4.1. Adicionando um novo projeto à solução
para esta solução, um novo projeto é adicionado usando o comando
File->Add->New Project...
a janela para criar um novo projeto é mostrada na Figura 3.
Figura 3. A janela para criar um projeto de projeto de teste de tipo
na janela, você precisa selecionar o grupo de modelos
Visual C# -> Test
nos modelos exibidos, o modelo de Projeto “Projeto de teste” é selecionado. O campo “nome” indica o nome do projeto que testará nosso programa. Você precisa definir, por exemplo, TestMinApp. O projeto está localizado em uma pasta separada “E:\Test\MinApp”.
Figura 4. O ” UnitTest1.arquivo “cs”. A janela do Solution Explorer com os projetos TestMinApp e MinApp exibidos
⇑
4.2. Estrutura da solução
como você pode ver na Figura 4, O Solution Explorer exibe a estrutura de itens da solução, que contém dois projetos:
- o projeto MinApp. Este é um projeto criado usando o modelo “Console Application” com a função Min() a ser testada;
- o projeto TestMinApp. Este projeto foi projetado para testar as funções do projeto MinApp. O código do programa que testa a função Min () será adicionado ao arquivo de projeto UnitTest1 do projeto TestMinApp.
ambos os projetos podem ser executados independentemente um do outro.
⇑
4.3. Código do programa de ” UnitTest1.arquivo “cs”. Atributos e
no projeto TestMinApp, o UnitTest1.o arquivo de teste cs é de interesse primário. Este arquivo contém métodos que testarão as funções do projeto MinApp. O projeto TestMinApp pode conter qualquer número de arquivos que contenham testes (por exemplo, UnitTest2.cs, UnitTest3.cs, etc.).
Código do Programa de ” UnitTest1.o arquivo cs”, gerado pelo MS Visual Studio 2010, é o seguinte:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMethod1() { // // TODO: Add test logic here // } }}
como você pode ver no código acima, o arquivo contém uma classe chamada UnitTest1. A classe envolve um método público chamado TestMethod1 ().Antes de implementar o método TestMethod1 (), o atributo é colocado. Isso significa que no corpo do método precisa escrever código que irá testar as funções do projeto MinApp.
na classe, você pode inserir qualquer número de métodos que testarão diferentes funções de diferentes módulos. O principal é que esses métodos sejam notados pelo atributo .
⇑
4.4. Fazendo alterações no texto UnitTest1.módulo cs. Alterando o nome do método de teste
você pode alterar os nomes dos métodos e adicionar novos métodos marcados com o atributo no UnitTest1.módulo cs. Com isso em mente, em UnitTest1.cs, o método TestMethod1() deve ser renomeado para TestMin().
depois que as alterações são feitas, o texto abreviado de UnitTest1.o módulo de arquivo cs será semelhante:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { ... public void TestMin() { // // TODO: Add test logic here // } }}
⇑
4.5. Ligar o MinApp projeto para o TestMinApp projeto
Para acessar a função Min () (a MinApp projeto) do TestMinApp projeto, você precisa montar o namespace no qual esta função é declarada.
para fazer isso, primeiro você precisa chamar o menu de contexto para o projeto TestMinApp. Em seguida, no menu de contexto, você precisa chamar o comando “Adicionar referência …” (Figura 5).
Figura 5. Como resultado, a janela “Adicionar Referência” é aberta, na qual você seleciona o projeto MinApp.
Figura 6. A janela “Adicionar Referência”. Conexão do projeto MinApp
após as ações executadas, as funções do projeto MinApp estarão disponíveis para uso no projeto TestMinApp.
Figura 7. A guia “Referências” com o projeto minapp conectado
⇑
4.6. Modificação do UnitTest1.texto do módulo cs
4.6.1. Adicionando o namespace MinApp a UnitTest1.cs
nesta etapa, você precisa adicionar o namespace MinApp ao UnitTest1.cs usando a diretiva “usar”:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ ...}
⇑
4.6.2. Texto do método TestMin ()
no texto do método TestMin (), você precisa inserir o seguinte código:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min);}...
⇑
4.7. O texto da UnitTest1.módulo cs
o texto de todos os UnitTest1.o módulo cs é o seguinte:
using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMin() { // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min); } }}
⇑
5. Execute o teste e verificando o resultado do teste
no Microsoft Visual Studio 2010 para testes unitários, um menu especial ‘Test’ é implementado.Para executar o teste, você deve selecionar um dos comandos
Test -> Run -> Tests in Current Context
ou
Test -> Run -> All Tests in Solution
conforme mostrado na Figura 8.
Figura 8. Chamando o comando test e visualizando o resultado
após iniciar o teste, o resultado pode ser visualizado à esquerda na janela Test Explorer. Como pode ser visto na Figura 8, o teste não é passado. Isso é lógico, porque na função Assert.AreEqual () comparamos os números 2 e 3, que são diferentes. Aqui o número 2 é inserido especialmente em vez do número 3.
se, em vez do número 2, você inserir a resposta correta – número 3 (mínimo entre 3, 4, 5), o teste será enviado (Figura 9). Nesse caso, o texto do método TestMin () será o seguinte:
...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(3, min);}...
a janela de resultados é mostrada na Figura 9.
Figura 9. Resultado do teste para o caso quando você insere a resposta correta
agora podemos concluir que a função Min() funciona corretamente para este caso.
⇑
6. Resultado. Interação entre projetos
nesta tarefa, a solução envolve dois projetos. Um projeto MinApp contém a função Min () a ser testada. O segundo projeto TestMinApp contém métodos de teste. No Microsoft Visual Studio 2010, cada um dos projetos é executado usando vários comandos de menu. Portanto, o projeto MinApp é executado da maneira padrão no menu Executar. E o projeto TestMinApp é lançado a partir de um menu especial de ‘teste’.