Go to English Blog

Test Notifier gem para Ruby

Leia em 1 minuto

Uma vez que você começa a escrever testes, você não para mais. Mas conforme a quantidade de testes vai crescendo, o tempo para executá-las aumenta e esperar os resultados se torna uma tarefa chata.

Para quem utiliza o Mac OS X, existem alguns plugins que permitem exibir os resultados em uma notificação do Growl. A primeira vez que usei, percebi que ia ter que escrever algo para quando em estivesse no Linux, ou mesmo no Windows (é, eu tenho que usar Windows às vezes). É uma excelente maneira de utilizar o Autotest.

Foi daí que surgiu este gem. Basta instalá-lo e toda vez que os testes forem executados, uma notificação irá aparecer. Funciona em qualquer lugar que você utilizar Test::Unit. Além disso, funciona nos 3 sistemas operacionais que, eventualmente, uso:

Instalação

A instalação é bastante simples. Faça o download do arquivo test_notifier.gem e instale-o com o comando gem install test_notifier. Depois, siga as instruções para o seu sistema operacional.

Ubuntu (Linux)

Instale o pacote "libnotify-bin" e suas dependências, caso existam. Basta executar o comando sudo aptitude install libnotify-bin

Mac OS X

Baixe o Growl e instale-o. Não esqueça de instalar o script "growlnotify", localizado no diretório "Extras" do instalador.

Windows

Baixe o Snarl e instale-o. Você também precisará instalar a gem do Snarl com o comando gem install ruby-snarl.

Agora, basta executar o comando abaixo para instalar o gem:

gem install test_notifier

A página do Test Notifier no Rubyforge é http://rubyforge.org/projects/testnotifier/. Lá você também pode fazer o download do gem para instalá-lo localmente.

Utilizando o Test Notifier

Para que as notificações funcionem, basta incluir o gem em seu código. Veja um exemplo de código Ruby:

require 'rubygems'
require 'test/unit'
require 'test_notifier'

class ExampleTest < Test::Unit::TestCase
  def test_should_pass
    assert true
  end
end

Veja como é exibida a notificação no Ubuntu:

Notificação exibida no Ubuntu quando todos os testes passam

Um teste que falhou seria exibindo assim no Windows:

Notificação exibida no Windows quando algum testa falha

No Mac OS X, a notificação pode ser exibida assim:

Notificação exibida no Mac OS X quando algum teste gera um erro

Gravei um screencast mostrando como instalar o gem no Ubuntu enquanto o projeto não é aprovado no Rubyforge. Para assistí-lo, baixe o arquivo test_notifier.ogg.

Utilizando o Test Notifier com Ruby on Rails

O Test Notifier pode ser facilmente integrado ao seu aplicativo desenvolvido em Ruby on Rails. Basta que você adicione a chamada para a biblioteca no arquivo "test/test_helper.rb". Veja como seu arquivo pode ser:

ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'
require 'test_notifier'

class Test::Unit::TestCase
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
end

Apenas adicionando require 'test_notifier', as notificações já serão exibidas. E automaticamente integradas com o Autotest, sem que você precise configurar nada.

Bugs

Caso encontre algum bug, envie um comentário.