Tôi đang thử nghiệm một số hành vi âm thanh và tôi cần người dùng đánh giá xem mọi thứ có vượt qua hay không. Tôi muốn yêu cầu người dùng trả lời trong một bài kiểm tra leiningen. Nhưng, có điều gì đó xảy ra với dòng đọc để ngăn chặn điều này.không đọc được đường dây bên trong thử nghiệm leiningen
Đây là một số ví dụ mã kiểm tra sau khi tạo một dự án mới với clojure "Lein foo mới" và chỉnh sửa foo/test/foo/core_test.clj file:
(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")))))
và đây là những gì xảy ra trong một "lein test"
lein test foo.core-test
enter something
hi
there
what
is
going on?
^C
chỉ điều khiển-C dừng cuộc gọi (đọc).
Tôi đang sử dụng Clojure 1.4.0 và 2.0.0 Leiningen-preview7 trên Java 1.6.0_35 Java HotSpot (TM) 64-Bit Server VM
Bất kỳ ý tưởng về cách để có được read-line để làm việc bên trong bài kiểm tra?
Tôi cũng nên lưu ý rằng (read-line) không hoạt động tốt bên trong "Lein repl" cho tôi ...
> 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:
tôi sẽ cung cấp cho @DaoWen chiến thắng về điều này. Đọc các liên kết & googling xung quanh, stdin chỉ là b0rken trên leiningen. Với đủ hoop-nhảy, có lẽ tôi có thể con số này ra, nhưng đề nghị của một hộp thoại có vẻ như con đường tốt nhất về phía trước. Thả một số mã thử nghiệm ở đây chỉ để hoàn thành trong trường hợp điều này giúp người khác.
(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)))))
Trùng lặp? http://stackoverflow.com/questions/7707558/clojure-read-line-doesnt-wait-for-input – noahlz
Có thể chạy nó như 'lein trampoline repl'? – Bill
kết quả thử nghiệm lein trampoline trong "Kiểm tra không hoàn thành sạch." và không có yêu cầu đầu vào. (lưu ý, lein repl đã hoạt động cho tôi) –