Compartilhar via


Demonstra Passo a passo: Primeiro teste de suporte com a gerar a partir do recurso de uso

Este tópico demonstra como usar o Gerar a partir de uso o recurso, que suporta o desenvolvimento de teste primeiro.

Desenvolvimento de teste primeiro é uma abordagem para design de software no qual você primeiro escreve testes de unidade com base nas especificações do produto e, em seguida, escreva o código fonte que é necessário para fazer os testes de êxito. Visual Studiooferece suporte ao desenvolvimento de teste-primeiro gerando novos tipos e membros no código fonte quando você primeiro referenciá-los no seus casos de teste antes de serem definidas.

Visual Studiogera a novos tipos e membros com interrupções mínimas em seu fluxo de trabalho. Você pode criar os stubs para tipos, métodos, propriedades, campos ou de construtores sem sair do seu local atual no código. Quando você abre uma caixa de diálogo para especificar as opções para a geração de tipo, o foco retorna imediatamente para o arquivo aberto atual quando a caixa de diálogo é fechada.

O recurso de gerar de uso pode ser usado com estruturas de teste que se integram Visual Studio. Neste tópico, o Microsoft Unit Testing Framework é demonstrado.

ObservaçãoObservação

Esta explicação passo a passo foi escrita com Visual Basic ou C# Visual development settings em mente. Explicação passo a passo também funcionarão com outras configurações.

Para alterar as configurações recomendadas, você pode usar este procedimento: On the Tools menu, click Import and Export Settings. Na primeira página da Import and Export Settings Wizard, clique em Redefinir todas as configurações. Sobre o Escolher um conjuntos de configurações padrão página, clique em Visual Basic configurações de desenvolvimento ou Configurações de desenvolvimento do Visual C#.

Para criar um projeto de biblioteca de classes do Windows e um projeto de teste

  1. Em Visual C# ou Visual Basic, crie um novo projeto de biblioteca de classes do Windows. O nome GFUDemo_VB ou GFUDemo_CS, dependendo de qual linguagem você estiver usando.

  2. Em Solution Explorer, o botão direito do mouse no ícone de solução na parte superior, aponte para Adde em seguida, clique em Novo projeto. No Novo projeto na caixa de Tipos de projeto painel à esquerda, clique teste.

  3. No modelos de painel, clique em O projeto de teste e aceite o nome padrão de TestProject1. A ilustração a seguir mostra a caixa de diálogo quando ele aparece na Visual C#. Em Visual Basic, a caixa de diálogo semelhante.

    Novo projeto caixa de diálogo

    Caixa de diálogo de novo projeto de teste

  4. Clique em OK para fechar a Novo projeto caixa de diálogo. Agora você está pronto para começar a escrever testes

Para gerar uma nova classe de um teste de unidade

  1. O projeto de teste contém um arquivo chamado UnitTest1. Clique duas vezes neste arquivo em Solution Explorer para abri-lo no Editor de código. Uma classe de teste e o método de teste foram gerados.

  2. Localize a declaração de classe UnitTest1 e renomeá-lo para AutomobileTest. No C#, se um UnitTest1() construtor estiver presente, renomeá-lo para AutomobileTest().

    ObservaçãoObservação

    Agora, o IntelliSense oferece duas alternativas para a conclusão da instrução de IntelliSense: modo de conclusão e o modo de sugestão. Use o modo de sugestão para situações em que classes e membros são usados antes de serem definidas. Quando uma janela de IntelliSense é aberta, você pode pressionar CTRL + ALT + barra de espaços para alternar entre o modo de conclusão e sugestão. See Listar Membros for more information. Modo de sugestão ajudará quando você está digitando Automobile na próxima etapa.

  3. Localize o TestMethod1() método e renomeá-lo para DefaultAutomobileIsInitializedCorrectly(). Dentro desse método, criar uma nova instância de uma classe chamada Automobile, conforme mostrado no seguinte ilustrações. Aparece uma linha ondulada, que indica um erro em tempo de compilação e uma marca inteligente aparece sob o nome de tipo. O local exato da marca inteligente varia, dependendo se você estiver usando o Visual Basic ou Visual C#.

    Visual Basic

    Sublinhado de marca inteligente em Visual Basic

    Visual C#

    Sublinhado de marca inteligente em C#

  4. Posicione o ponteiro do mouse sobre a marca inteligente para ver uma mensagem de erro informando que nenhum tipo de chamada Automobile foi definida. Clique na marca inteligente ou pressione CTRL +. (CTRL + ponto) para abrir o menu de atalho gerar de uso, conforme mostrado nas ilustrações a seguir.

    Visual Basic

    Menu de contexto de marca inteligente em Visual Basic

    Visual C#

    Menu de contexto de marca inteligente em C#

  5. Agora você tem duas opções. Você poderia clicar em Gerar ' classe automóvel ' para criar um novo arquivo em seu projeto de teste e preenchê-lo com uma classe vazia chamada Automobile. Esta é uma maneira rápida de criar uma nova classe em um novo arquivo que tenha os modificadores de acesso padrão no projeto atual. Você também pode clicar em Gerar novo tipo de para abrir o Gerar novo tipo de caixa de diálogo. Isso fornece opções que incluem a colocação de classe em um arquivo existente e adicionar o arquivo para outro projeto.

    Clique em Gerar novo tipo de para abrir o Gerar novo tipo de caixa de diálogo, que é mostrada na ilustração a seguir. No projeto , clique em GFUDemo_VB ou GFUDemo_CS para instruir o Visual Studio para adicionar o arquivo para o projeto de código de origem em vez do projeto de teste.

    Gerar caixa de diálogo Novo tipo

    Gerar um NovoTipo<>caixa de dialog\ de>

  6. Clique em OK para fechar a caixa de diálogo e criar o novo arquivo.

  7. Em Solution Explorer, procure sob o nó de projeto de GFUDemo_VB ou GFUDemo_CS para verificar se o novo Automobile.vb ou arquivo de automobile.cs estiver lá. No Editor de código, o foco está ainda em AutomobileTest.DefaultAutomobileIsInitializedCorrectly. Você pode continuar a gravar o teste com um mínimo de interrupção.

Para gerar um stub de propriedade

  • Suponha que a especificação de produto afirma que o Automobile classe tem duas propriedades public chamadas Model e TopSpeed. Essas propriedades devem ser inicializadas com valores padrão do "Not specified" e -1 pelo construtor padrão. O seguinte teste de unidade verificará que o construtor padrão define as propriedades para seus valores padrão correto.

    Adicione a seguinte linha de código para DefaultAutomobileIsInitializedCorrectly.

    Assert.IsTrue((myAuto.Model = "Not specified") And (myAuto.TopSpeed = -1))
    
    Assert.IsTrue((myAuto.Model == "Not specified") && (myAuto.TopSpeed == -1));
    

    Porque o código faz referência a duas propriedades indefinidas em Automobile, uma marca inteligente aparecer. Clique na marca inteligente para Model e, em seguida, clique em Gerar stub de propriedade. Gerar um stub de propriedade para o TopSpeed propriedade também.

    No Automobile classe, os tipos das novas propriedades corretamente são inferidos do contexto.

    A ilustração a seguir mostra o menu de atalho de marca inteligente.

    Visual Basic

    Menu de contexto Gerar Propriedade em Visual Basic

    Visual C#

    Menu de contexto Gerar Propriedade em C#

Para localizar o código-fonte

  • Use o Navegue para o recurso para navegar até o arquivo de código-fonte Automobile.cs ou Automobile.vb, para que você possa verificar as novas propriedades foram geradas.

    O Navegue para recurso permite que você insira uma seqüência de texto, como, por exemplo, um nome de tipo ou a parte de um nome, e vá para o local desejado clicando-se o elemento na lista de resultados rapidamente.

    Abrir o Navegue para caixa de diálogo clicando no Editor de código e pressionando o CTRL +, (CTRL + vírgula). Na caixa de texto, digite automóvel. Clique o automóvel de classe na lista e clique em OK.

    O Navegue para janela é mostrada na ilustração a seguir.

    Navegue para a janela

    Caixa de diálogo Navegar até

Para gerar um stub para um novo construtor.

  1. Neste método de teste, você irá gerar um stub do construtor irá inicializar o Model e TopSpeed Propriedades para terem valores que você especificar. Posteriormente, você irá adicionar mais código para concluir o teste. Adicione o seguinte método de teste adicional para seu AutomobileTest classe.

    <TestMethod()> Public Sub AutomobileWithModelNameCanStart()
        Dim model As String = "Contoso"
        Dim topSpeed As Integer = 199
        Dim myAuto As New Automobile(model, topSpeed)
    End Sub
    
    [TestMethod]
    public void AutomobileWithModelNameCanStart()
    {
        string model = "Contoso";
        int topSpeed = 199;
        Automobile myAuto = new Automobile(model, topSpeed);
    }
    
  2. Clique na marca inteligente em um novo construtor de classe e, em seguida, clique em Gerar stub de construtor. No Automobile arquivo de classe, observe que o construtor new examinou os nomes das variáveis locais que são usados na chamada do construtor, encontrado propriedades que têm os mesmos nomes na Automobile classe e o código fornecido no corpo do construtor para armazenar os valores de argumento na Model e TopSpeed Propriedades. (Em Visual Basic, o _model e _topSpeed campos no novo construtor são os campos de apoio implicitamente definidos para o Model e TopSpeed Propriedades.)

  3. Depois de gerar o construtor new, um sublinhado ondulado aparece sob a chamada para o construtor padrão em DefaultAutomobileIsInitializedCorrectly. A mensagem de erro informa que o Automobile classe não tem nenhum construtor que leva argumentos zero. Para gerar um construtor padrão explícita que não tem parâmetros, clique na marca inteligente e clique em Gerar stub de construtor.

Para gerar um stub para um método.

  1. Suponha que a especificação afirma que uma nova Automobile podem ser colocados em um estado de execução se seu Model e TopSpeed propriedades são definidas como algo diferente de valores padrão. Adicione as seguintes linhas para o AutomobileWithModelNameCanStart método.

    myAuto.Start()
    Assert.IsTrue(myAuto.IsRunning = True)
    
    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
  2. Clique na marca inteligente para o myAuto.Start chamada de método e, em seguida, clique em Gerar stub do método.

  3. Clique na marca inteligente para o IsRunning propriedade e clique Gerar stub de propriedade. O Automobile classe agora contém o código a seguir.

    Public Class Automobile
        Sub New(ByVal model As String, ByVal topSpeed As Integer)
            _model = model
            _topSpeed = topSpeed
        End Sub
        Sub New()
            ' TODO: Complete member initialization 
        End Sub
    
        Property Model() As String
        Property TopSpeed As Integer
        Property IsRunning As Boolean
        Sub Start()
            Throw New NotImplementedException
        End Sub
    End Class
    
    public class Automobile
    {
        public string Model { get; set; }
        public int TopSpeed { get; set; }
    
        public Automobile(string model, int topSpeed)
        {
            this.Model = model;
            this.TopSpeed = topSpeed;
        }
    
        public Automobile()
        {
            // TODO: Complete member initialization
        }
    
        public void Start()
        {
            throw new NotImplementedException();
        }
    
        public bool IsRunning { get; set; }
    }
    

Para executar os testes

  1. Sobre o teste , aponte para Executare, em seguida, clique em Todos os testes na solução. Esse comando executa todos os testes em todas as estruturas de teste que são escritas para a solução atual.

    Nesse caso, há dois testes, e os dois falharem, conforme o esperado. O DefaultAutomobileIsInitializedCorrectly teste falhar porque o Assert.IsTrue retorna a condição de False. O AutomobileWithModelNameCanStart teste falhar porque o Start método na Automobile classe lança uma exceção.

    O Resultados de teste janela é mostrada na ilustração a seguir.

    Janela de resultados de teste

    Resultados de testes que falharam

  2. No Test Results janela, clique duas vezes em cada linha de resultado de teste para ir para o local de cada falha de teste.

    ObservaçãoObservação

    Se clicar duas vezes não levam a falha de teste no código, você pode ativar esse recurso seguindo o procedimento a seguir: No Ferramentas menu, clique em Opções, em seguida, expanda Ferramentas de teste e clique em A execução de teste. Selecione o duas vezes em um resultado de teste de unidade com falha ou Inconclusive exibe o ponto de falha no teste de caixa de seleção.

Para implementar o código-fonte

  1. Adicione o seguinte código para o construtor padrão assim que o Model, TopSpeed e IsRunning propriedades são inicializadas para seus valores padrão correto de "Not specified", -1, e True (true).

    Sub New()
        Model = "Not specified"
        TopSpeed = -1
        IsRunning = True
    End Sub
    
    public Automobile()
    {
        this.Model = "Not specified";
        this.TopSpeed = -1;
        this.IsRunning = true;
    }
    
  2. Quando o Start método é chamado, ele deve definir o IsRunning Sinalizador para true somente se a Model ou TopSpeed propriedades são definidas como algo diferente de seus valores padrão. Remover o NotImplementedException do método body e adicione o código a seguir.

    Sub Start()
        If Model <> "Not specified" Or TopSpeed <> -1 Then
            IsRunning = True
        Else
            IsRunning = False
        End If
    End Sub
    
    public void Start()
    {
        if (this.Model != "Not specified" || this.TopSpeed != -1)
            this.IsRunning = true;
        else
            this.IsRunning = false;
    }
    

Para executar os testes novamente

  • Sobre o teste , aponte para Executare, em seguida, clique em Todos os testes na solução. Neste momento os testes foram bem-sucedidos. O Resultados de teste janela é mostrada na ilustração a seguir.

    Janela de resultados de teste

    Resultados de testes aprovados

Consulte também

Tarefas

Como: Procurar por objetos, definições e referências (símbolos)

Referência

Listar Membros

Conceitos

Gerar a partir de uso