Testgroups, Testkonfiguration: Gruppen von Tests an oder abstellen

Hi Liste,

aus Java/TestNG kenne ich noch testgruppen: Tests, die unter einem
gemeinsamen Namen zusammengefasst wurden

z.b.
@Test(groups = { “fast” })
public void aFastTest() { …

Das schöne an diesen Gruppen war, dass man sie z.B. auch gemeinsam an-
oder ausschalten konnte, Gruppen einzeln testen konnte, Gruppen nur in
bestimmten Umgebungen ablaufen lassen konnte usw. - gibt’s sowas(auch
gerne in Schmalspur) auch in Rails?!
Konkret hab ich das Problem, dass ich ein Feature temporär abstellen
möchte, und es eine ganze Reihe von Tests gibt, die auf dieses Feature
setzen: Die würde ich gerne temporär alle zusammen abdrehen und wieder
anstellen, wenn das Feature wieder aktiv ist. Hat jemand dazu
vielleicht ne Idee?!

Grüßestefan

Hallo Stefan,

gerne in Schmalspur) auch in Rails?!
nur sehr schmal. Du kannst bei Aufruf eines einzelnen Tests
(also etwas ruby test/unit/myclass_test.rb) mit -n ein Pattern fuer
die Funktionen im Testcase, die ausgefuehrt werden sollen, angeben (see
–help fuer eine Liste aller Optionen)

Konkret hab ich das Problem, dass ich ein Feature temporär abstellen
möchte, und es eine ganze Reihe von Tests gibt, die auf dieses Feature
setzen: Die würde ich gerne temporär alle zusammen abdrehen und wieder
anstellen, wenn das Feature wieder aktiv ist. Hat jemand dazu
vielleicht ne Idee?!

Da faellt mir noch ein, dass das Definieren von Klassen in Ruby ja
auch ein Ausfuehren von Code ist.
Also
KEIN_FOO = true
class Bla
def bla
‘bla’
end
unless KEIN_FOO
def foo
‘foo’
end
end
end
erzeugt eine Klasse Bla, die die Methode foo nur enthaelt wenn man
KEIN_FOO auf false setzt.
Und wenn es die Methode nicht gibt, kann sie natuerlich auch nicht
ausgefuehrt werden…
Wenn du im Test-Helper entsprechende Konstanten einfuehrst und die
Tests entsprechend konditional definierst, koennte das gehen.

Gemacht habe ich sowas noch nicht.

HTH
Morus

Hi Morus,

Am 26.02.2008 um 17:21 schrieb Morus W.:

nur sehr schmal. Du kannst bei Aufruf eines einzelnen Tests
(also etwas ruby test/unit/myclass_test.rb) mit -n ein Pattern fuer
die Funktionen im Testcase, die ausgefuehrt werden sollen, angeben
(see
–help fuer eine Liste aller Optionen)

ouch, das ist ein bisschen sehr schmal: Wir brauchen es vor allem,
weil die continouus integration sich beschwert: Da müsste man dann
also mindestens in den rake-task rein, der da ausgeführt wird…

Also
end
erzeugt eine Klasse Bla, die die Methode foo nur enthaelt wenn man
KEIN_FOO auf false setzt.
Und wenn es die Methode nicht gibt, kann sie natuerlich auch nicht
ausgefuehrt werden…
Wenn du im Test-Helper entsprechende Konstanten einfuehrst und die
Tests entsprechend konditional definierst, koennte das gehen.

Gemacht habe ich sowas noch nicht.

hmm, ja könnte ein Ansatz sein: Ich denke, ich werd’s aber mal damit
versuchen, das ganze rake beizubringen. Den Test-Task kann man ja
aufhacken:
(Matthew Bass - Musings on software and life...
) - wenn man hier den Test-Task so überschreibt, das man die Fileliste
basierend auf einem Gruppenattribut baut, dann sollte das eigentlich
schon funktionieren…

Grüßestf

Hallo,

das sollte eigentlich ganz einfach gehen: die testgruppen in
entsprechende verzeichnisse packen (z.b. tests/fast) und dann einen
rake task bauen, der per Dir.glob(“test/fast/*_test.rb”) nur die
gruppentests nimmt. eventuell muss dann auch der standard rake task
überschrieben werden. habe ich aber nicht probiert.

könnte aber klappen
Am 27.02.2008 um 08:58 schrieb Stefan F.:

vielleicht ne Idee?!
def foo

Grüße
stf


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


Siebert WD
Michael S.
Trappenweg 6, 15749 Mittenwalde, Deutschland