2012-10-08 32 views
7

Bu test var: clojure.test'in çıktısını almak mümkün mü?

(ns opengltuts.core-test 
    (:use clojure.test 
     opengltuts.util) 
    (:import (org.lwjgl.opengl 
      GL11 GL12 GL13 GL14 GL15 GL20 GL21 GL30 GL31 GL32 GL33))) 

(def gl-classes [GL11 GL12 GL13 GL14 GL15 GL20 GL21 GL30 GL31 GL32 GL33]) 

(deftest find-method-test 
    (testing "find-method finds method in single class" 
    (is (= (find-method "toString" Object) 
      ["public java.lang.String java.lang.Object.toString()"]))) 
    (testing "find-method finds all methods in list of classes" 
    (is (= (apply find-method "glShaderSource" gl-classes) 
      (comment "Omitted a 'p' to trigger failure") 
      ["ublic static void org.lwjgl.opengl.GL20.glShaderSource(int,java.nio.ByteBuffer)" 
      "public static void org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence)" 
      "public static void org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence[])"])))) 

Şimdi bu başarısız emin oldum, ben

lein test opengltuts.core-test 

FAIL in (find-method-test) (core_test.clj:14) 
find-method finds all methods in list of classes 
expected: (= (apply find-method "glShaderSource" gl-classes) ["ublic static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.nio.ByteBuffer)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence[])"]) 
     actual: (not (= ("public static void org.lwjgl.opengl.GL20.glShaderSource(int,java.nio.ByteBuffer)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence[])") ["ublic static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.nio.ByteBuffer)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence)" "public static void 
org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence[])"])) 

Ran 1 tests containing 2 assertions. 
1 failures, 0 errors. 
Tests failed. 

gibi çıktı bu oldukça okunamaz bulmak olsun.

<all that info stuff, like the name of the test> 
Expected: [something] 
Got: [something-else] 

Olduğu gibi ben sorunların daha ben hangisinin karşılaştırarak ne bulmaktan: Aksine bundan daha ben gibi çıkış tercih ederim. o çıkış Eğer aradığınızı daha yakın gibi Midje görünüyor olsa

cevap

4

Clojure için birçok popüler test çerçeveler vardır, (kullandığınız olan) clojure.test popüler. İşte bir örnek testi başarısızlığı:

FAIL at (t_core.clj:13) 
    Expected: "I am a test file fact" 
     Actual: 3 

https://github.com/marick/Midje/wiki/Migrating-from-clojure.test

+0

Ben en iyi yanıt olarak bunu kabul edip emin değilim - Ben Midje seviyorum ama aynı zamanda gerçekten ... – Cubic

+0

en clojure.test çıkışı yapılandırılabilir olup olmadığı sorusuna cevap vermedi Yapılandırılabileceğine dair hiçbir belirti bulamıyorum, bu yüzden bunun (yazdırma işlevinin yeniden işlenmesi ya da işlenmesi) kısa olmadığından şüpheleniyorum. –

+0

Uh, sorunum her iki şekilde de çözüldü. – Cubic

9

clojure.test 'ın raporlama clojure.test/report fonksiyonunu yeniden bağlama yoluyla yapılandırılabilir. Bu docs for the namespace'da açıklanmaktadır. Fonksiyonunuz, her biri test çalışmasının bir aşamasını temsil eden bir dizi artalan haritası ile çağrılacaktır. clojure.test kaynağında here kaynağında JUnit uyumlu çıktı oluşturma örneği vardır.

İlgili konular