Unit testing 使用redefs在Windows上的特定项目中不起作用

Unit testing 使用redefs在Windows上的特定项目中不起作用,unit-testing,clojure,clojure.test,Unit Testing,Clojure,Clojure.test,我很难在Clojure中创建一个简单的单元测试,使用redefs的在Windows上进行模拟。测试代码、我要测试的函数和要模拟的函数都位于不同的名称空间/文件中: 正在测试的功能: (ns com.mynamespace.a (:require [com.mynamespace.b :as b] ) ) (defn afunc [param] (b/bfunc param)) (ns com.mynamespace.b) (defn bfunc [param] ;

我很难在Clojure中创建一个简单的单元测试,使用redefs的
在Windows上进行模拟。测试代码、我要测试的函数和要模拟的函数都位于不同的名称空间/文件中:

正在测试的功能:

(ns com.mynamespace.a
  (:require [com.mynamespace.b :as b] ) )

(defn afunc [param] 
  (b/bfunc param))
  (ns com.mynamespace.b)

  (defn bfunc [param]
    ; External call
  )
要模拟的从属b命名空间:

(ns com.mynamespace.a
  (:require [com.mynamespace.b :as b] ) )

(defn afunc [param] 
  (b/bfunc param))
  (ns com.mynamespace.b)

  (defn bfunc [param]
    ; External call
  )
测试代码

(ns com.mynamespace.a-test
  (:require [com.mynamespace.a :as a]
            [com.mynamespace.b :as b] )
  (:use [clojure.test]))

(deftest a-tests
      (with-redefs [b/bfunc (constantly "dummy")]
        (print (a/afunc "test"))
  )
)
我认为我正确地使用redefs
,因为我的单元测试在Linux机器(docker容器或虚拟Ubuntu)上运行良好,但是当在我的Windows开发机器上执行/开发它们时,它就不起作用了:带有redefs的
绑定没有应用并且测试想要进行真正的调用,例如http调用,我想模拟一下。如果我运行
lein test
,或者尝试通过eclipseccw从REPL执行测试,情况也是如此

我知道redefs有一些奇怪的行为,但由于我的测试在Linux上运行得很好,我想我在Windows上运行这个项目的测试时错过了一些东西。在我的Windows机器上编写测试时,我希望实现快速反馈循环

你知道我做错了什么吗? 谢谢
Andras发现这个问题是我正在处理的一个项目特有的,因为jvm opts标志是-Dclojure.compiler.direct linking=true


关闭直接链接后,我的测试也可以在我的Windows开发机器上进行。我想知道为什么他们在Linux上通过了测试,但在那里运行
lein test
时,它可能没有被应用。

无法在Windows 7上使用Clojure 1.8.0进行复制。