Suporte ao desenvolvimento de jogos!


    Testes unitários com Test::Unit

    Compartilhe
    Valentine
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 5046
    Créditos : 1070

    Testes unitários com Test::Unit

    Mensagem por Valentine em Qui Maio 10, 2018 7:40 am

    O que são testes unitários?
    São testes desenvolvidos para validarem "unidades" dentro do seu software, essas unidades podem ser métodos, classes, módulos etc... Essa validação é feita com a comparação da saída de alguma função com o resultado esperado. Ao final da execução um relatório é mostrado contendo informações sobre o processo (número de testes, sucessos e falhas por exemplo). Frameworks de testes unitários possibilitam a realização desses testes de maneira mais simples, rápida e com mais transparência.

    O que precisa ser testado?
    Não pense que é só sair testando todo código que aparece pela frente que vai ficar tudo bem no final. Pelo contrário, isso só vai te atrasar. No geral, funções com retorno e efeitos colaterais devem ser testados para garantir a integridade da aplicação.

    Como realizar esses testes?
    Assumindo que esse é seu primeiro contato com testes unitários, o melhor meio (por simplicidade) para fazer isso é o Test::Unit. É um módulo em Ruby e possui todas as funcionalidades básicas que um framework com esse fim deve ter.

    Primeiramente temos nossa classe que será testada (nota-se que essa classe está sendo usada apenas como exemplo já que seus métodos são muitos simples e o resultado é óbvio). É uma lista de amigos e nela temos algumas funções, sendo: add para adicionar amigos, remove para remover e clear para limpar.
    Código:
    # File: friend_list.rb
     
    class FriendList
        def initialize
            @friends = []
        end
     
        def add(name)
            @friends << name
            name
        end
     
        def remove(name)
            @friends.delete(name)
            name
        end
     
        def clear
            @friends.clear
            @friends
        end
    end

    Os testes para essa classe ficariam da seguinte forma:
    Código:
    # File: friend_list_tests.rb
    require 'friend_list'
    require 'test/unit'
     
    class TestFriendList < Test::Unit::TestCase
      def test_return
        list = FriendList.new
     
        assert_equal('Paulo Soreto', list.add('Paulo Soreto'))
        assert_equal('Pedro Josefino', list.add('Pedro Josefino'))
        assert_equal([], list.clear)
      end
     
      def test_methods
        list = FriendList.new
     
        list.add('Paulo Soreto')
        assert_equal(['Paulo Soreto'], list)
     
        list.add('Pedro Josefino')
        assert_equal(['Paulo Soreto', 'Pedro Josefino'], list)
     
        list.remove('Paulo Soreto')
        assert_equal(['Pedro Josefino'], list)
     
        list.clear
        assert_equal([], list)
      end
    end

    Créditos:
    Paulo Soreto


    _________________
    Jonny157
    Jonny157
    Ocasional
    Ocasional

    Mensagens : 245
    Créditos : 9

    Re: Testes unitários com Test::Unit

    Mensagem por Jonny157 em Qui Maio 10, 2018 9:18 am

    Que isso, teste unitário é conteúdo de primeira, muito bom Valentine vou até mensagem removida pela staff

    Obrigado por compartilhar, só conhecia testes unitários no C#.

      Data/hora atual: Ter Jan 22, 2019 8:37 pm