Testando um aplicativo grande com UI vários mapas

Este tópico discute como usar testes codificados da interface do usuário quando você está testando um aplicativo grande usando vários mapas de interface do usuário.

Quando você cria um novo teste de interface do usuário codificado, o Visual Studio estrutura de testes gera código para o teste por padrão em um UIMap classe. Para obter mais informações sobre como gravar codificado de testes de interface do usuário, consulte Como: Criar um teste codificado de UI e Anatomia de um teste codificado de UI.

O código gerado para o mapa da interface do usuário contém uma classe para cada objeto que o teste interage com. Para cada método gerado, uma classe complementar para os parâmetros de método é gerada especificamente para esse método. Se houver um grande número de objetos, páginas, formulários e controles em seu aplicativo, o mapa da interface do usuário pode ficar muito grande. Além disso, se várias pessoas estão trabalhando em testes, o aplicativo se tornar incômodo com um único arquivo grande do mapa da interface do usuário.

Usar vários arquivos de mapa de interface do usuário pode fornecer os seguintes benefícios:

  • Cada mapa pode ser associado um subconjunto de lógico do aplicativo. Isso torna mais fácil de gerenciar as alterações.

  • Cada testador pode trabalhar em uma seção do aplicativo e verificar seu código sem interferir com outros testadores trabalhar em outras seções do aplicativo.

  • Adições ao aplicativo de interface do usuário podem ser dimensionadas incrementalmente com impacto mínimo nos testes para outras partes da interface do usuário.

Você precisa de vários mapas de interface do usuário?

Crie vários mapas de interface do usuário em cada um desses tipos de situações:

  • Vários conjuntos complexos de controles de interface do usuário compostos que juntos executam uma operação lógica, como, por exemplo, uma página de registro em um site ou a página de compra de um carrinho de compras.

  • Independente de um conjunto de controles que são acessados a partir de vários pontos do aplicativo, como, por exemplo, um assistente com várias páginas de operações. Se cada página de um assistente é especialmente complexa, você poderia criar mapas de interface de usuário separada para cada página.

Adicionando a interface do usuário de vários mapas

Para adicionar um mapa da interface do usuário ao seu projeto.

  1. Em Solution Explorer, para criar uma pasta em seu projeto de teste para armazenar todos os mapas de interface do usuário, clique com o botão direito no arquivo de projeto de teste, aponte para Add e, em seguida, clique em Nova pasta. Por exemplo, você pode nomear UIMaps.

    A nova pasta é exibida sob o projeto de teste.

  2. Com o botão direito do UIMaps pasta, aponte para Adde em seguida, clique em Novo Item.

    A caixa de diálogo Add New Item é exibida.

    ObservaçãoObservação

    Você deve ter um projeto de teste para adicionar um novo mapa codificado de teste de interface do usuário.

  3. Selecione Mapa de teste de interface do usuário codificado da lista.

    No nome , digite um nome para o novo mapa de interface do usuário. Use o nome do componente ou página que o mapa representará, por exemplo, HomePageMap.

  4. Clique em Adicionar.

    O Visual Studio minimiza a janela e o Builder de teste de interface do usuário codificado caixa de diálogo é exibida.

  5. Registre as ações para o primeiro método e clique em Gerar código.

  6. Depois que você gravou todas as ações e declarações para o primeiro componente ou página e agrupadas-los em métodos, feche o Builder de teste de interface do usuário codificado caixa de diálogo.

  7. Continue a criar mapas de interface do usuário. Registrar ações e declarações, agrupá-los em métodos para cada componente e, em seguida, gerar o código.

Em muitos casos, a janela de nível superior do seu aplicativo permanece constante para todos os assistentes, formulários e páginas. Embora cada mapa da interface do usuário tenha uma classe para a janela de nível superior, todos os mapas provavelmente estão se referindo à mesma janela de nível superior dentro do quais todos os componentes do seu aplicativo seja executado. Codificado UI testes procurar controles hierarquicamente, de cima para baixo, começando a partir da janela de nível superior, portanto, em um aplicativo complexo, a janela de nível superior de real pôde ser duplicada em cada mapa da interface do usuário. Se a janela de nível superior de real é duplicada, várias modificações resultará se altera de janela. Isso poderia causar problemas de desempenho quando você alterna entre mapas de interface do usuário.

Para minimizar esse efeito, você pode usar o CopyFrom() método para garantir que a nova janela de nível superior nesse mapa da interface do usuário é o mesmo que o principal superior nível janela.

Exemplo

O exemplo a seguir faz parte de uma classe de utilitário que fornece acesso a cada componente e seus controles filho que são representados pelas classes geradas nos vários mapas de interface do usuário.

Neste exemplo, um aplicativo da Web denominado Contoso tem uma Home Page, uma página de produto e uma página do carrinho de compras. Cada uma dessas páginas compartilham uma janela comum de nível superior que é a janela do navegador. Há um mapa da interface do usuário para cada página e a classe de utilitário tem código semelhante ao seguinte:

using ContosoProject.UIMaps;
using ContosoProject.UIMaps.HomePageClasses;
using ContosoProject.UIMaps.ProductPageClasses;
using ContosoProject.UIMaps.ShoppingCartClasses;

namespace ContosoProject
{
    public class TestRunUtility
    {
        // Private fields for the properties
        private HomePage homePage = null;
        private ProductPage productPage = null;
        private ShoppingCart shoppingCart = null;

        public TestRunUtility()
        {
            homePage = new HomePage();
        }

        // Properties that get each UI Map
        public HomePage HomePage
        {
            get { return homePage; }
            set { homePage = value; }
        }

        // Gets the ProductPage from the ProductPageMap.
        public ProductPage ProductPageObject
        {
            get
            {
                if (productPage == null)
                {
                    // Instantiate a new page from the UI Map classes
                    productPage = new ProductPage();

                    // Since the Product Page and Home Page both use
                    // the same browser page as the top level window,
                    // get the top level window properties from the
                    // Home Page.
                    productPage.UIContosoFinalizeWindow.CopyFrom(
                        HomePage.UIContosoWindowsIWindow);
                }
                return productPage;
            }
        }

    // Continue to create properties for each page, getting the 
    // page object from the corresponding UI Map and copying the 
    // top level window properties from the Home Page.
}

Consulte também

Tarefas

Como: Criar um teste codificado de UI

Referência

UIMap

CopyFrom

Outros recursos

Anatomia de um teste codificado de UI