23
Set 08

The Test Case

 

Um Test Case é uma classe herdada de Test::Unit::TestCase que contém uma estratégia de teste, composta por testes relacionados contextualmente.

 

Por exemplo, eu posso ter um test case chamado UserTestCase que possui um conjunto de testes que checam se:

 

  • a senha é válida (test_password)

  • o username possui alguma palavra proibida  (test_username_cussin)

  • o usuario tem menos de 150 anos de idade (test_shriveled_raisin)

The Test Suite

 

Um Test Suite é uma coleção de test cases. Quando você roda um test suite, ele irá executar todos os testes que ele possui.

 

Por exemplo, em vez de rodar cada unit test individualmente, você pode rodar todos eles, criando uma suite e incluindo-os. * Este artigo não entra em test suites *

 

 A relação entre esses objetos é assim:

  • um test suite

  • possui vários test cases
  • que possuem vários tests

  • que possuem várias assertions

     


Bem, já vimos que escrevemos testes para provar que nosso código está trabalhando corretamente. Vamos criar uma classe realmente simples para nós testarmos.

# secret_agent.rb
class SecretAgent

# simple public properties
attr_accessor :username
attr_accessor :password

# nosso "construtor"
def initialize(username,password)
@username = username
@password = password
end

# a lógica que determina se a senha é
# suficientemente segura para o usuario

def is_password_secure?
return false if @password.nil?
return false if @password.empty?
return false if @password.size < 4
return false if @password == "stirred"
return false if @password == "password"
return false if @password == @username
true
end
end

Então, nós temos uma classe que representa um agente secreto. O que estamos prestes a fazer é testar um usuário para ter certeza que sua senha é segura o suficiente para ser usada no nosso BD super secreto. O método is_password_secure?  irá nos responder isso. Se a senha do usuário passar no nosso severo conjunto de regras, então a função irá retornar um valor true e o agente secreto terá o privilégio de acesso. [ Isso está no modelo ]

 

Vamos contruir em cima do último teste que escrevemos, adicionando algumas coisas a mais. Especificamente, vamos testar este novo SecretAgent.

 

require 'test/unit'
require 'secret_agent'

class HelloTestCase < Test::Unit::TestCase

def test_hello
assert true
end

# nosso novo teste ira agir sobre a classe SecretAgent
def test_these_passwords
# todas as senhas abaixo devem dar erro.
# com o ! eu garanto que o meu teste só vai passar se
# essas senhas realmente derem erro

assert !SecretAgent.new("bond","abc").is_password_secure?
assert !SecretAgent.new("bond","007").is_password_secure?
assert !SecretAgent.new("bond","stirred").is_password_secure?
assert !SecretAgent.new("bond","password").is_password_secure?
assert !SecretAgent.new("bond","bond").is_password_secure?
assert !SecretAgent.new("bond","").is_password_secure?
assert !SecretAgent.new("bond",nil).is_password_secure?

# agora, ele garante que as senhas permitidas serão permitidas.
assert SecretAgent.new("bond","goldfinger").is_password_secure?
assert SecretAgent.new("bond","1234").is_password_secure?
assert SecretAgent.new("bond","shaken").is_password_secure?
end
end

Neste exemplo, nós expandimos nosso test case adicionando outro test chamado test_these_passwords com 10 assertions.

 

Interpretando o resultado:

 

Cada ponto abaixo do "Started" representa um teste. Você pode ter 1 de 3 valores:

 

  • . significa que o teste passou

  • F significa que o teste

  • E significa que um erro ocorreu.

     

    Fonte: Guia Rails

 

publicado por dessa às 15:26
tags:

Setembro 2008
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6

7
8
9
10
11
12
13

14
15
16
17
18
19
20

21
25
26

28
29
30


pesquisar
 
Subscrever por e-mail

A subscrição é anónima e gera, no máximo, um e-mail por dia.

blogs SAPO