As a newbie to clojure, I have used leiningen to create a sample project with
lein new app first-project
which gave me this directory
.
├── doc
│ └── intro.md
├── LICENSE
├── project.clj
├── README.md
├── resources
├── src
│ └── first_project
│ └── core.clj
├── target
│ └── repl
│ ├── classes
│ └── stale
│ └── extract-native.dependencies
└── test
└── first_project
└── core_test.clj
Without modifying any files, I can lauch successfully the only failing test with
lein test
...
Ran 1 tests containing 1 assertions.
1 failures, 0 errors.
Tests failed.
But I am unable to do the same from the REPL using run-tests
lein repl
first-project.core=> (use 'clojure.test)
nil
first-project.core=> (run-tests)
Testing first-project.core
Ran 0 tests containing 0 assertions.
0 failures, 0 errors.
{:type :summary, :pass 0, :test 0, :error 0, :fail 0}
I tried (but does not work)
(require 'first-project.core-test)
In your example above the repl is in the wrong namespace. It may work better if you switch the repl to the
core_test
namespace. and then run(run-tests)
.Another fun way of developing tests is to just run them from the REPL until they work, because tests are normal functions with some extra metadata.
Remember you have to load the file in addition to calling
in-ns
Let's say your test file istests/first_project/core_test.clj
, then you will need to callKeep in mind that
_
in the file system becomes-
in the namespace and/
becomes.
.Start a REPL with
lein repl
, then:I prefer to stay in the
user
namespace, as opposed to changing it within-ns
as mentioned by another answer. Instead, pass the namespace as an argument torun-tests
(as shown above).I'd also recommend staying away from
(use 'clojure.test)
; that is why I suggested(require '[clojure.test :refer [run-tests]])
above. For more background, read http://dev.clojure.org/jira/browse/CLJ-879