如何将单元测试添加到Leiningen项目?

时间:2011-10-14 18:16:31

标签: unit-testing clojure leiningen

大家好:我注意到leiningen有一个很好的单元测试插件 - 你只需输入“lein test”:)。但是,目前尚不清楚它如何“找到”测试文件。我需要将特定文件夹放入其中吗?或者,如果它只是扫描命名空间(这是它在lein文档中所说的),我如何知道我需要使用哪个命名空间来为leiningen查看我的测试?

我在考虑简单地创建一个名为tests.clj的测试文件。样本模板真的很棒......

2 个答案:

答案 0 :(得分:8)

在顶层创建一个test /目录,然后创建一些文件,比如mytests.clj。这是一个示例(警告:我实际上没有编译它,但简化了现有的测试):

(ns mytests
    (:use clojure.test))

(defn myfixture [block] 
    (do 
        (println "before test")
        (block)
        (println "after test")))

(use-fixtures :each myfixture)

(deftest mytest
    (is (= 2 (+ 1 1))))

答案 1 :(得分:-3)

for lein version 2.7.1:{这是来自Linux Mint with Leiningen 2.7.1 on Java 1.8.0_121 Java HotSpot(TM)64-Bit Server VM} 我想通过测试做更多的事情,现在有了这些新知识......

var canvas = new fabric.Canvas('c');

fabric.Tag = fabric.util.createClass(fabric.Group, {
    type: 'PItag',

initialize: function() {

    options = {};

    options.top     = 0;
    options.left    = 0;

    var defaults    = {
        width:  100,
        height: 40,
        originX: 'center',
        originY: 'center'
    };

    var defaults1    = {
        width:  100,
        height: 20,
        originX: 'center',
        originY: 'top',
        top: -20,
        backgroundColor: 'red'
    };

    var defaults2    = {
        width:  100,
        height: 20,
        originX: 'center',
        originY: 'top',
        top: 0
    };

    var items   = [];

    items[0]    = new fabric.Rect($.extend({}, defaults, {
        fill: '#77AAFF',
    }));

    items[1]    = new fabric.Textbox('PI tag name', $.extend({}, defaults1, {
        textAlign: 'center',
        fontSize: 14
    }));

    items[2]    = new fabric.IText('####', $.extend({}, defaults2, {
        textAlign: 'center',
        fontSize: 16
    }));

    this.callSuper('initialize', items, options);

},

getTagName: function () {
    return this._objects[1].text;
},

setTagName: function (value) {
    this._objects[1].text = value;
},

getValue: function () {
    return this._objects[2].text;
},

setValue: function (value) {
    this._objects[2].text = value;
    this.canvas.renderAll();
},

_render: function(ctx) {
    this.callSuper('_render', ctx);          
}

});
var pi = new fabric.Tag();

pi.setTagName("Unix time");
canvas.add(pi);

setInterval(function() {
    pi.setValue(Math.floor((new Date()).getTime() / 1000).toString());
    canvas.renderAll();
}, 1000);

然后你可以添加:(lein new <projname> cd <projname> tree -d cat test/<projname>/core_test.clj lein test -> observe failing test template even on blank new project ) 并看到你的努力...