Tesztelés a Ruby kurzuson

Tanuld meg tesztelni a Ruby-feladataidat az Exercism-ön


A tesztek futtatása

A teszteket így futtathatod:

$ ruby hamming_test.rb

Csak az első teszt fut le, a többit a skip metódus teszi függőben. Ahogy az egyes teszteket teljesíted, töröld ki vagy kommenteld ki a következő skip-et.

A kihagyások megértése

A skip metódus arra utasítja a tesztcsomagot, hogy ne futtasson le egy tesztet. Ezt általában arra használják, hogy elkerüljék a még nem implementált funkciók tesztjeinek futtatását, így arra összpontosíthatsz, amin éppen dolgozol.

A tesztfutás összegzése felsorolja a kihagyott tesztek számát. Egy feladat befejezése előtt az összes kihagyást meg kell szüntetned.

A tesztjelentés testreszabása

Ha színes kimenetet szeretnél, futtasd a teszteket ezzel:

$ ruby hamming_test.rb -p

Ha látni szeretnéd a tesztek nevét, futtasd a teszteket ezzel:

$ ruby hamming_tests.rb -v

Ha csak egy tesztet szeretnél futtatni, megadhatsz egyet vagy egy csoportot reguláris kifejezés stílusú illesztéssel.

$ ruby hamming_tests.rb -n /empty/

A beállításokat is kombinálhatod.

Az összes kihagyás kikapcsolása

Most, hogy birtokodban van az az új képesség, hogy kiválaszd az egyes teszteket vagy tesztek csoportjait, amelyeket futtatni szeretnél, lehet, hogy az összes kihagyást ki szeretnéd kapcsolni.

A gyors, de ronda megoldás

Kihasználva, hogy Rubyban a metódusok felülírhatók, ha hozzáadnád ezt a kódsort:

def skip ; end

így a Hamming-tesztfájlban:

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

akkor az összes kihagyás továbbra is kiértékelődik, de a tesztjeid lefutnak.

A gyors, de mégis tisztább

Persze idővel idegesítő lehet az összes fájlt szerkesztgetni, ezért csinálhatod úgy, ahogy mi is tettük a feladatok fejlesztésekor: készíts egy fájlt, amelyben benne van a skip definíciója, és amikor szükséged van rá, require-old be könyvtárként.

Létrehoztunk egy lib mappát, hogy ott tartsuk a „segítő” dolgainkat, és így néz ki:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

A használatáról szóló leírás kommentként szerepel a fájl listázásában, és a fájllistázás teljes állapotában látható.