私はいくつかのオーディオの動作をテストしています。物事が成功するか失敗するかを判断するためにユーザーを必要とします。私はleiningenテストの中でユーザーに応答を求めています。しかし、これを防止するread-lineには何かが起こっています。ライニングの読み取りラインがライニングのテストで失敗する
これは「レイン新しいfoo」という持つ新しいClojureのプロジェクトを作成し、FOO /テスト/ fooの/ core_test.cljファイル編集後のいくつかの例のテストコードです:
(ns foo.core-test
(:use clojure.test
foo.core))
(deftest a-test
(testing "FIXME, what a fail."
(let [_ (println "enter something")
yn (read-line)]
(println yn)
(is (= yn "y")))))
をし、これが中で何が起こりますか"lein test"
lein test foo.core-test
enter something
hi
there
what
is
going on?
^C
control-Cは(read-line)呼び出しを停止します。
VM
内部動作するようにラインを読んで取得する方法上の任意のアイデアを、私はClojureの1.4.0を使用していますし、Leiningenをは、Java 1.6.0_35は、Java HotSpot(TM)上の64ビットサーバー-preview7を2.0.0テスト?
私も...私のために細かい内部の「レインREPLを」動作している(リード線)に注意してください
> lein repl
nREPL server started on port 54398
REPL-y 0.1.0-beta8
Clojure 1.4.0
Exit: Control+D or (exit) or (quit)
Commands: (user/help)
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
(user/sourcery function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
(user/clojuredocs name-here)
(user/clojuredocs "ns-here" "name-here")
user=> (println (read-line))
hi
hi
nil
user=> (read-line)
ho
"ho"
UPDATE:
私は@DaoWen勝利を与えるつもりですこれに。リンクを読んで&グーグルで回って、stdinはちょうどあなたの上で悔しいです。十分なフープジャンプで、おそらく私はこれを理解することができましたが、ダイアログボックスの提案は最善の道案内のようです。テストコードを完全なものにするためにここにいくつかのテストコードをドロップすると、他人に役立ちます。
(ns foo.core-test
(:use clojure.test
foo.core))
(import 'javax.swing.JOptionPane)
(defn ask-yn
"return 0 on pass, 1 on fail"
[prompt]
(JOptionPane/showConfirmDialog nil prompt "User Input" JOptionPane/YES_NO_OPTION))
(deftest a-test
(testing "a-test"
(let [yn (ask-yn "did a-test pass?")]
(is (= yn 0)))))
(deftest b-test
(testing "b-test"
(let [yn (ask-yn "did b-test pass?")]
(is (= yn 0)))))
重複? http://stackoverflow.com/questions/7707558/clojure-read-line-doesnt-wait-for-input – noahlz
「lein trampoline repl'」として実行することはありますか? – Bill
lein trampolineのテスト結果は「テストはきれいに完了しませんでした」入力要求はありません。 (注意、lein replはすでに私のために働いています) –