Instruções passo a passo: suporte Test-First com o recurso Gerar a partir do Uso
Este tópico demonstra como usar o Gerar a partir do uso recurso, que oferece suporte ao desenvolvimento do primeiro teste.
Primeiro teste de desenvolvimento é uma abordagem de design de software no qual você primeiro escreve testes de unidade baseados nas especificações do produto e, em seguida, escreve o código fonte que é necessário para fazer os testes de êxito.Visual Studiosuporta desenvolvimento de teste-primeiro gerando novos tipos e membros no código-fonte quando você primeiro vê-las em casos de teste antes de serem definidas.
Visual Studiogera 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 construtores sem sair do seu local atual no código.Quando você abre uma caixa de diálogo para especificar opções de geração de tipo, o foco retorna imediatamente para o arquivo atual aberto quando a caixa de diálogo é fechada.
O recurso de gerar de uso pode ser usado com estruturas de teste integrarem Visual Studio.Este tópico é demonstrado Microsoft Unit Testing Framework.
Observação |
---|
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio. |
Para criar um projeto de biblioteca de classe do Windows e um projeto de teste
Em Visual C# ou Visual Basic, crie um novo projeto de biblioteca de classe do Windows.O nome de GFUDemo_VB ou GFUDemo_CS, dependendo de qual linguagem você estiver usando.
Em Solution Explorer, clique com o botão direito no ícone da solução na parte superior, aponte para Adde clique em Novo projeto.No Novo projeto na caixa de Tipos de projeto painel à esquerda, clique teste.
No modelos painel, clique em Projeto de teste de unidade e aceite o nome padrão de UnitTestProject1.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.
Caixa de diálogo New Project
Clique em OK para fechar o Novo projeto caixa de diálogo.Agora você está pronto para começar a escrever testes
Para gerar uma nova classe de teste de unidade
Projeto de teste contém um arquivo chamado UnitTest1.Clique duas vezes neste arquivo Solution Explorer para abri-lo no Editor de código.Uma classe de teste e o método de teste foi gerados.
Localize a declaração de classe UnitTest1 e renomeá-lo para AutomobileTest.No C#, se um UnitTest1() construtor está presente, renomeie-o para AutomobileTest().
Observação IntelliSense agora oferece duas alternativas para conclusão da instrução IntelliSense: modo de conclusão e modo sugestão.Use o modo de sugestão para situações em que as 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 modo de conclusão e sugestão.Consulte Usando IntelliSense para maiores informações.Modo de sugestão ajudará quando você está digitando Automobile na próxima etapa.
Localize o TestMethod1() método e o renomeie para DefaultAutomobileIsInitializedCorrectly().Dentro desse método, criar uma nova instância de uma classe chamada Automobile, como mostra as ilustrações a seguir.Aparece uma linha ondulada, indicando um erro de tempo de compilação e uma marca inteligente é exibida sob o nome de tipo.O local exato da marca inteligente varia, dependendo se você estiver usando Visual Basic ou Visual C#.
Visual Basic
Visual C#
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 de gerar de uso, conforme as ilustrações a seguir.
Visual Basic
Visual C#
Agora você tem duas opções.Você poderia clicar em Gerar ' classe automóvel para criar um novo arquivo no seu projeto de teste e preenchê-lo com uma classe vazia chamada Automobile.Isso é uma maneira rápida de criar uma nova classe em um novo arquivo tem modificadores de acesso padrão no projeto atual.Você também pode clicar Gerar novo tipo para abrir o Gerar novo tipo de caixa de diálogo.Isso fornece opções que incluem colocar a classe em um arquivo existente e adicionar o arquivo para outro projeto.
Clique em Gerar novo tipo para abrir o Gerar novo tipo de caixa de diálogo que é mostrada na ilustração a seguir.No projeto , clique 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 teste.
Gerar caixa de diálogo Novo tipo
Clique em OK para fechar a caixa de diálogo e criar o novo arquivo.
Em Solution Explorer, procure sob o nó de projeto GFUDemo_VB ou GFUDemo_CS para verificar se o novo Automobile.vb ou Automobile.cs arquivo está lá.No Editor de código, o foco está ainda em AutomobileTest.DefaultAutomobileIsInitializedCorrectly.Você pode continuar a escrever o teste com um mínimo de interrupção.
Para gerar um stub de propriedade
Suponha que a especificação do produto informa que o Automobile classe tem duas propriedades públicas chamadas Model e TopSpeed.Essas propriedades devem ser inicializadas com os valores padrão de "Not specified" e -1 pelo construtor padrão.O teste de unidade seguinte irá 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 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
Visual C#
Para localizar o código-fonte
Use o Navegue para 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 um nome de tipo ou parte do nome, e vá para o local desejado clicando no elemento na lista de resultados rapidamente.
Abrir o Navegue para caixa de diálogo clicando no Editor de código e pressionando CTRL +, (CTRL + vírgula).Na caixa de texto, digite automóvel.Clique o automóvel classe na lista e clique em OK.
O Navegue para janela é mostrada na ilustração a seguir.
Navegue para a janela
Para gerar um stub para um novo construtor
Neste método de teste, você irá gerar um stub de construtor que inicializará o Model e TopSpeed propriedades têm 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); }
Clique na marca inteligente no construtor da classe nova e 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, encontradas propriedades têm os mesmos nomes na Automobile classe e o código fornecido no corpo do construtor para armazenar os valores de argumento no Model e TopSpeed propriedades.(Em Visual Basic, o _model e _topSpeed campos no novo construtor são os campos fazendo implicitamente definida para o Model e TopSpeed propriedades.)
Depois de gerar o construtor new, aparece um sublinhado ondulado em chamada para o construtor padrão em DefaultAutomobileIsInitializedCorrectly.A mensagem de erro informa que o Automobile classe não tem nenhum construtor que leva zero argumentos.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
Suponha que a especificação afirma que uma nova Automobile pode colocar 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);
Clique na marca inteligente para o myAuto.Start de chamada de método e clique em Gerar stub do método.
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
Sobre o Teste de unidade , aponte para Executar testes de unidadee clique em Todos os testes.Este comando executa todos os testes em todas as estruturas de teste gravadas 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 condição retorna False.O AutomobileWithModelNameCanStart teste falhar porque o Start método de Automobile classe lança uma exceção.
O Resultados de teste janela é mostrada na ilustração a seguir.
Janela resultados do teste
No Resultados de teste janela, clique duas vezes em cada linha de resultado de teste para ir para o local de cada falha de teste.
Para implementar o código-fonte
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; }
Quando o Start método é chamado, ele deve definir o IsRunning sinalizador para true somente se o Model ou TopSpeed propriedades são definidas como algo diferente de seu valor padrão.Remover o NotImplementedException do método body e adicione o seguinte código.
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 clique em Todos os testes na solução.Desta vez os testes foram bem-sucedidos.O Resultados de teste janela é mostrada na ilustração a seguir.
Janela resultados do teste
Consulte também
Conceitos
Verificando código usando testes de unidade