Ruby on Rails: Tests

Aus Wikibooks

Wechseln zu: Navigation, Suche

In Rails ist mit Test::Unit ein Testframework enthalten, das testbebleitete und testgetriebene Softwareentwicklung einfach macht. Java-Entwicker werden sich zu Hause fühlen. Test::Unit ärbeitet ähnlich wie Junit.

[Bearbeiten] Softwareentwicklung mit Tests

[Bearbeiten] Testbebleitete Softwareentwicklung

..

[Bearbeiten] Testgetriebene Softwareentwicklung

..

[Bearbeiten] Test::Unit Tests schreiben

Ein erstes Beispiel ..

# Eigentlich sollte 
# require 'test_helper'  
# reichen, aber in meiner Umgebung brauche ich noch
require File.dirname(__FILE__) + '/../test_helper'
 
class EventTest < ActiveSupport::TestCase
  def test_creation
    sev1 = Event.create(:title => "first event")
    assert_equal "first event", Event.find(:first).title
  end
 
  # ..
end

.. zeigt wie man das Framework einbindet.

[Bearbeiten] Eine Datenbank nur für Tests

Vieleicht kennt der eine oder adere Leser das Problem aus seiner bisherigen Programmiererfahrung. Beim Testen ist etwas unvorhergesehenes passsiert. Soweit ok, denn deshalb testen wir ja. Aber jetzt kommt's. Ist die Datenbank betroffen? Und wenn ja, wie bekommen wir sie wieder den alten Zustand? Die Lösung von Rails ist einfach und vielleicht haben wir sie schon beim setup gesehen.

Damit dieses Problem gar nicht ers auftreten kann schlägt uns Rails vor drei unabhängige Datebanken für Entwicklung, Test und Produktionzu benutzen. Konfiguriert wird das in config/database.yml. Diese Datei haben wir mit der "rails"-Anweisung zusammen mit dem Rest der Railsanwndung automatisch generiert. Über dem Abschnitt, der die Test-Datenbank konfiguriert stehen zwei Warnungen.

# config/database.yml
 
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  timeout: 5000

(TODO) Warnungen:

  • rake löscht die Testdaten ...
  • Deshalb sollen wir immer eine eigene Test-Datenbank benutzen

So haben wir die Testdaten immer in einem definierten Zustand und wir vermeiden sicher Konflikte mit Entwicklungs- und Produktionsdaten.

[Bearbeiten] Testmethoden

[Bearbeiten] Fixtures

[Bearbeiten] Setup

Schema von der Devellopmentdatenbank in die Testdatenbank kopieren:

rake db:test:prepare

[Bearbeiten] Tests ausführen

ruby test/unit/xxx_test.rb

[Bearbeiten] Statt einer Zusamenfassung: Sie haben den Abschnitt über Tests nicht verstanden ..

  • wenn sie für Test und Entwicklung dieselbe Datenbank benutzen
  • wenn sie Core-Funktionen von Rails in ihren Anwendung testen
  • wenn sie nach einer Restrukturierung (Refactoring) ihre Testsuite nicht laufen lassen
  • ...

<< Startseite/Inhaltsverzeichnis >>

Persönliche Werkzeuge