Teste de unidade de aplicativos Xamarin.iOS

Este documento descreve como criar testes de unidade para seus projetos do Xamarin.iOS. Os testes de unidade com o Xamarin.iOS são feitos usando a estrutura Touch.Unit que inclui um executor de teste iOS, bem como uma versão modificada do NUnit chamado Touch.Unit que fornece um conjunto familiar de APIs para gravar testes de unidade.

Configurar um projeto de teste no Visual Studio para Mac

Para configurar uma estrutura de teste de unidade para seu projeto, tudo o que você precisa fazer é adicionar à solução um projeto do tipo Projeto de Testes de Unidade iOS. Faça isso clicando com o botão direito do mouse em sua solução e selecionando Adicionar Adicionar > Novo Projeto. Na lista, selecione iOS > Tests > Unified API > iOS Unit Tests Project (você pode escolher C# ou F#).

Escolha C# ou F#

O item acima criará um projeto básico que contém um programa de execução básico e que faz referência ao novo assembly MonoTouch.NUnitLite, assim seu projeto terá esta aparência:

O projeto no Gerenciador de Soluções

A classe AppDelegate.cs contém o executor de teste e tem esta aparência:

[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
    UIWindow window;
    TouchRunner runner;

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        // create a new window instance based on the screen size
        window = new UIWindow (UIScreen.MainScreen.Bounds);
        runner = new TouchRunner (window);

        // register every tests included in the main application/assembly
        runner.Add (System.Reflection.Assembly.GetExecutingAssembly ());

        window.RootViewController = new UINavigationController (runner.GetViewController ());

        // make the window visible
        window.MakeKeyAndVisible ();

        return true;
    }
}

Observação

O tipo de projeto de teste de unidade do iOS não está disponível no Visual Studio 2019 ou no Visual Studio 2017 no Windows.

Gravando alguns testes

Agora que você tem o shell básico in-loco, você deve gravar seu primeiro conjunto de testes.

Testes são gravados ao criar classes que têm o atributo [TestFixture] aplicado a elas. Dentro de cada classe de TestFixture, você deve aplicar o atributo [Test] a cada método que você deseja que o executor de teste invoque. Os acessórios de teste reais podem residir em qualquer arquivo no seu projeto de testes.

Para começar a usar rapidamente selecione Adicionar/Adicionar Novo Arquivo e selecione o grupo UnitTests do Xamarin.iOS. Isso adicionará um arquivo esqueleto que contém um teste aprovado, um teste não aprovado e um teste ignorado e tem esta aparência:

using System;
using NUnit.Framework;

namespace Fixtures {

    [TestFixture]
    public class Tests {

        [Test]
        public void Pass ()
        {
                Assert.True (true);
        }

        [Test]
        public void Fail ()
        {
                Assert.False (true);
        }

        [Test]
        [Ignore ("another time")]
        public void Ignore ()
        {
                Assert.True (false);
        }
    }
}

Executando seus testes

Para executar este projeto dentro de sua solução, clique com botão direito do mouse nele e selecione Depurar Item ou Executar Item.

O executor de teste permite que você veja quais testes são registrados e selecione individualmente os testes que podem ser executados.

A lista de testes registradosUm texto individual

Os resultados da execução

Você pode executar acessórios de teste individuais selecionando o acessório texto nas exibições aninhadas ou você pode executar todos os seus testes com "Executar tudo". Se você executar o teste padrão, ele deverá incluir um teste aprovado, um não aprovado e um ignorado. Esta é a aparência do relatório e você pode fazer uma busca detalhada diretamente nos testes não aprovados e descobrir mais informações sobre a falha:

A captura de tela mostra um relatório de exemplo, tela do Executor de Teste.Captura de tela que mostra um relatório de exemplo, tela Testes.A captura de tela mostra um relatório de exemplo, Tela de teste com status de teste.

Você também pode examinar a janela Saída do Aplicativo no seu IDE para ver quais testes estão sendo executados e seus status atuais.

Gravando novos testes

O NUnitLite é uma versão modificada do NUnit denominada projeto Touch.Unit. Ele é uma estrutura de teste leve para .NET, com base em ideias em NUnit e fornece um subconjunto de seus recursos. Ele usa o mínimo de recursos e é executada em plataformas de recursos restritos, como aquelas usados no desenvolvimento incorporado e móvel. A API NUnitLite está disponível para você no Xamarin.iOS. Com o esqueleto básico fornecido pelo modelo de teste de unidade, o ponto de entrada principal é o método Classe assert.

Além dos métodos de classe assert, a funcionalidade de teste de unidade é dividida nos namespaces a seguir que fazem parte do NUnitLite: