HashCode

An organizer of symbols

Archive for the ‘test’ Category

Testes sem LER

Wednesday, September 5th, 2007

Nossa mãe… toda vez que vou fazer teste tenho que digitar assert_algumacoisa1, assert_algumacoisa2…

Assim

A Classe

require 'test/unit'
class Numero

  def initialize(num)
    @num=num
  end

  def tipo
    (@num%2)?:par:impar
  end

  def valor
    @num
  end

end

O Teste

require 'test/unit'

class TestNumero < Test::Unit::TestCase

  def test_simple
     assert_equal(:par, Numero.new(3).tipo)
     assert_equal(:impar, Numero.new(3).tipo)
     assert_equal(2, Numero.new(3).valor)
     assert_equal(3, Numero.new(3).valor)
  end

end

Resultado

Loaded suite -
Started
F
Finished in 0.027703 seconds.

  1) Failure:
test_simple(TestNumero) [-:24]:
<:impar> expected but was
<:par>.

1 tests, 2 assertions, 1 failures, 0 errors

Cansei…

Recomendo a criação implícita do assert_ via method_missing na classe Test::Unit::TestCase . Exemplo:

Adicionando o facade

require 'test/unit'

class Test::Unit::TestCase
  def method_missing(method_name,*args,&block)
    send("assert_#{method_name}".to_sym, *args,&block)
  end
end

Agora temos o código mais resumido.

class TestNumero < Test::Unit::TestCase

  def test_simple
     equal(:par, Numero.new(3).tipo)
     equal(:impar, Numero.new(3).tipo)
     equal(2, Numero.new(3).valor)
     equal(3, Numero.new(3).valor)
  end
end