2013-05-03 22 views
9

Piszę niektóre testy jednostkowe, które wchodzą w interakcje z bazą danych. Z tego powodu przy testowaniu jednostkowym przydatne jest posiadanie metody konfiguracji i podziału w celu utworzenia, a następnie upuszczenia tabeli. Jednak there are no docs: O w metodzie use-fixtures.Clojure: Jak używać urządzenia w testowaniu

Oto co należy zrobić:

(setup-tests) 
(run-tests) 
(teardown-tests) 

Nie jestem zainteresowany obecnie w prowadzeniu konfigurację i przerywaniem przed i po każdym badaniu, ale gdy przed grupą testów i raz po. Jak Ty to robisz?

Odpowiedz

17

Nie można używać use-fixtures celu zapewnienia konfiguracji i kod przerywaniem dla dowolnie zdefiniowanych grup badań, ale można użyć :once celu zapewnienia konfiguracji i kod przerywaniem dla każdej przestrzeni nazw:

;; my/test/config.clj 
(ns my.test.config) 

(defn wrap-setup 
    [f] 
    (println "wrapping setup") 
    ;; note that you generally want to run teardown-tests in a try ... 
    ;; finally construct, but this is just an example 
    (setup-test) 
    (f) 
    (teardown-test))  


;; my/package_test.clj 
(ns my.package-test 
    (:use clojure.test 
     my.test.config)) 

(use-fixtures :once wrap-setup) ; wrap-setup around the whole namespace of tests. 
           ; use :each to wrap around each individual test 
           ; in this package. 

(testing ...) 

Takie podejście wymusza pewne sprzężenie pomiędzy kodem konfiguracji i przerwania a pakietami testów, ale generalnie nie jest to duży problem. Zawsze możesz zrobić własne owijanie ręczne w sekcjach testing, patrz na przykład the bottom half of this blog post.

+0

Dzięki, skończyło się za pomocą czegoś takiego: '(defn test-ns-hak [] (create-table) (put-4) (put-5) (get-2) (get -3) (get-4) (scan-2) (scan-3) (scan-4) (drop-table)) ' –

+0

@DavidWilliams Ty naprawdę nie powinien umieścić swoje testy w wrap/hook. Cały punkt instalacji polega na tym, że oddzielasz kod instalacyjny od testów. Do tego właśnie służy argument (w moim przykładzie) haka; to callback uruchamia testy (i inne haki) we właściwym miejscu w kodzie twojego urządzenia. Następnie po prostu zdefiniuj swoje testy tak jak zwykle (na przykład z deftest). –

+0

Zgadzam się, że posty na blogu ThornyDev są miłym podsumowaniem części fixjours z clojure.test. http://thornydev.blogspot.com/2012/09/before-and-after-logic-in-clojuretest.html –

Powiązane problemy