2014-04-11 14 views
12

chcę uruchomić ten test z każdym lein test:Zrób 'slow' zestaw testów z clojure.test

(ns acker.core-test 
    (:require [clojure.test :refer :all] 
      [acker.core :refer :all])) 

(deftest ackermann-test 
    (testing "ack-1, ack-2, ack-3" 
    (are [m n e] 
     (= (ack-1 m n) (ack-2 m n) (ack-3 m n) e) 
     0 0 1 
     0 1 2 
     0 2 3 
     1 0 2 
     1 1 3 
     1 2 4 
     2 0 3 
     2 1 5 
     2 2 7 
     3 0 5 
     3 1 13 
     3 2 29))) 

Chcę, aby ackermann-slow-test uruchomić tylko, kiedy o to poprosi:

(deftest ackermann-slow-test 
    (testing "ackermann (slow)" 
    (are [m n e] (= (ack-3 m n) e) 
     3 3  61 
     3 4 125 
     4 0  13 
     4 1 65533))) 

pełny kod jest dostępny na Github: https://github.com/bluemont/ackermann

Odpowiedz

24

Według Making Leiningen work for You Phil Hagelberg funkcja test-selectors dodano Leiningen w wersji 1.4.

Dwa proste kroki. Po pierwsze, dodać do project.clj:

:test-selectors {:default (complement :slow) 
       :slow :slow 
       :all (constantly true)} 

drugie, oznaczyć test z metadanych:

(deftest ^:slow ackermann-slow-test 
    (testing "ackermann (slow)" 
    (are [m n e] (= (ack-3 m n) e) 
     3 3  61 
     3 4 125 
     4 0  13 
     4 1 65533))) 

Teraz masz trzy opcje wyświetlanie testy:

⚡ lein test 
⚡ lein test :slow 
⚡ lein test :all 

Również ten informacje można łatwo znaleźć pod numerem lein test -h:

Uruchom testy projektu.

Znakowanie deftest lub NS formularzy z metadanych pozwala wybrać selektorów określić podzbiór swojego zestawu testowego uruchomienia:

(deftest ^:integration network-heavy-test 
    (is (= [1 2 3] (:numbers (network-operation))))) 

Napisz selektorów w project.clj:

:test-selectors {:default (complement :integration) 
       :integration :integration 
       :all (constantly true)} 

Argumenty do tego zadania będą uważane za selektory testowe, jeśli są to słowa kluczowe , w przeciwnym razie argumenty muszą być testowymi przestrzeniami nazw lub plikami do uruchomienia. Bez argumentów: domyślny selektor testu jest używany, jeśli jest obecny, inaczej wszystkie testy zostaną uruchomione. Parametry selektora testowego muszą znajdować się po liście obszarów nazw.

Domyślnie: dostępny jest tylko test-selektor do uruchamiania wybranych testów. W przypadku przykładu , lein test :only leiningen.test.test/test-default-selector działa tylko określony test. Wartość domyślna: dla wszystkich testów dostępny jest cały test-selektor: .

argumenty ([]) & testy