Como: Adicionar uma condição de teste ao Editor de teste de unidade banco de dados
The TestCondition classe usada para criar condições de teste é completamente extensível. O procedimento a seguir explica como criar uma condição de teste seja exibido no criador de teste unidade de banco de dados.
Para criar uma condição de teste
In Visual Studio, crie um projeto classe biblioteca.
Adicione uma referência ao assembly do seguinte:
- Microsoft.VisualStudio.TeamSystem.dados.UnitTesting.dll.
Para adicionar esse arquivo, você deve ir para [programa Files] \Modelo 9.0\DBPro Visual Studio, onde [ProgramFiles] representa a pasta arquivos de programas.
Derivar a classe do TestCondition classe, conforme mostrado no exemplo de código a seguir:
using Microsoft.VisualStudio.TeamSystem.Data.UnitTesting.Conditions; using System.ComponentModel; [DisplayName("NewTestCondition")] public class NewTestCondition:TestCondition { // Additional implementation to be added here }
Assine o Assembly com um nome forte.Para obter mais informações, consulte Como: Assinar um assembly com um nome forte.
Crie a biblioteca de classes.
Adicionar o assembly ao cache de assemblies global usando gacutil /i.Para obter mais informações, consulte Global ferramenta cache assembly (Gacutil.exe) .
Observação: Antes de executar o comando gacutil, executá-lo usando a janela do aviso de comando em Visual Studio 2005. Para em em aberto essa janela, clicar Iniciar, point to Todos os programas, point to Microsoft Visual Studio 2005e clicar O Visual Studio Tools.Se você usar a janela do aviso de comando padrão, você deve edição variável de ambiente caminho para apontar para o local gacutil.exe.Normalmente, esse local é [programa Files] \Implantação do Microsoft Visual Studio 9.0\SDK\v2.0\Bin.
Registre a nova condição de teste.Para obter mais informações, consulte Como: Registrar uma nova condição de teste.
Exemplo
Neste exemplo, você criar uma condição de teste simples que verifica se o número de colunas retornado na ResultSet é esperada.Você pode usar essa condição para se certificar de que o contrato para um procedimento armazenado está correto.
//ResultSetColumnCountCondition
//Sample custom test condition
//
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using System.ComponentModel.Design;
using TestTools = Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TeamSystem.Data.UnitTesting;
using Microsoft.VisualStudio.TeamSystem.Data.UnitTesting.Conditions;
namespace MyTestConditions
{
[DisplayName("ResultSet Column Count")]
public class ResultSetColumnCountCondition : TestCondition
{
private int _resultSet;
private int _count;
private int _batch;
public ResultSetColumnCountCondition()
{
_resultSet = 1;
_count = 0;
_batch = 1;
}
//method you need to override
//to perform the condition verification
public override void Assert(DbConnection validationConnection, ExecutionResult[] results)
{
//call base for parameter validation
base.Assert(validationConnection, results);
//verify batch exists
if (results.Length < _batch)
throw new TestTools.AssertFailedException(String.Format("Batch {0} does not exist", _batch));
ExecutionResult result = results[_batch - 1];
//verify resultset exists
if (result.DataSet.Tables.Count < ResultSet)
throw new TestTools.AssertFailedException(String.Format("ResultSet {0} does not exist", ResultSet));
DataTable table = result.DataSet.Tables[ResultSet - 1];
//actual condition verification
//verify resultset column count matches expected
if (table.Columns.Count != Count)
throw new TestTools.AssertFailedException(String.Format(
"ResultSet {0}: {1} columns did not match the {2} columns expected",
ResultSet, table.Columns.Count, Count));
}
//this method is called to provide the string shown in the
//test conditions panel grid describing what the condition tests
public override string ToString()
{
return String.Format(
"Condition fails if ResultSet {0} does not contain {1} columns",
ResultSet, Count);
}
//below are the test condition properties
//that are exposed to the user in the property browser
#region Properties
//property specifying the resultset for which
//you want to check the column count
[Category("Test Condition")]
[DisplayName("ResultSet")]
[Description("ResultSet Number")]
public int ResultSet
{
get { return _resultSet; }
set
{
//basic validation
if (value < 1)
throw new ArgumentException("ResultSet cannot be less than 1");
_resultSet = value;
}
}
//property specifying
//expected column count
[Category("Test Condition")]
[DisplayName("Count")]
[Description("Column Count")]
public int Count
{
get { return _count; }
set
{
//basic validation
if (value < 0)
throw new ArgumentException("Count cannot be less than 0");
_count = value;
}
}
#endregion
}
}
A classe para a condição de teste personalizado herda da classe base TestCondition.Devido às propriedades adicionais no teste de personalizado condição usuários podem configurar a condição do Propriedades janela após eles registraram a condição.Neste exemplo, você adicionará duas propriedades.Os usuários da condição de teste personalizada podem usar o ResultSetpropriedade para especificar qual conjunto de resultados a coluna contagem deve ser verificada.Eles podem usar o Contagempropriedade para especificar o número de colunas esperado.Três atributos são adicionados para cada propriedade:
O nome da categoria, que ajuda a organizar as propriedades.
O nome para exibição da propriedade.
Descrição da propriedade.
Alguns validação básica é executada nas propriedades para verificar se o valor de ResultSet propriedade não é menor do que um e que o valor do Contagempropriedade é maior que zero.
O método Assert executa a tarefa principal da condição de teste.Substitua esse método para validar que a esperada condição for atendida.Este método fornece dois parâmetros:
O primeiro parâmetro é a conexão de banco de dados que é usada para validar a condição de teste.
O parâmetro do segundo e o mais importante é a matriz de resultados, que retorna um elemento de matriz para cada lote foi executada.Neste versão, apenas um único lote é suportado para cada script de teste.Portanto, a condição de teste examinará sempre o primeiro elemento da matriz.Elemento da matriz contém um DataSet que, por sua vez, contém os conjuntos de resultados retornados para o script de teste.Neste exemplo, o código verificará se a tabela de dados no DataSet contém o número apropriado de colunas.Para obter mais informações, consulte DataSet.
Você deve conjunto a biblioteca de classes que contém sua condição de teste para ser assinado, que pode ser feito nas propriedades do projeto sobre o Assinatura guia.