【问题标题】:Context agnostic JavaScript Testing Framework上下文无关的 JavaScript 测试框架
【发布时间】:2010-10-04 02:24:33
【问题描述】:

我正在寻找一个可以在任何环境中轻松使用的 JavaScript 测试框架,无论是浏览器、控制台、XUL 等。

是否有这样的框架,或者有一种方法可以轻松改造现有框架,使其与上下文无关?

编辑:测试框架应该绑定到任何其他框架,例如 jQuery 或 Prototype.js,并且不应该依赖于存在的 DOM(或文档对象)。我正在寻找一些东西来测试纯 JavaScript

【问题讨论】:

  • 有趣 - 您是否在浏览器之外对用于浏览器的 javascript 进行单元测试?
  • 不完全是,它可以用于任何 JavaScript 环境。

标签: javascript unit-testing testing frameworks


【解决方案1】:

好的,这是我刚刚根据一些早期工作酿造的东西。我希望这能满足您的需求。

jsUnity

轻量级通用 JavaScript 测试框架

jsUnity 是一个轻量级的通用 JavaScript 测试框架, 与上下文无关。它不依赖 任何浏览器功能,因此 可以在 HTML、ASP、WSH 或 使用的任何其他上下文 JavaScript/JScript/ECMAScript。

HTML 中的示例用法

<pre>
<script type="text/javascript" src="../jsunity.js"></script>
<script type="text/javascript">
function sampleTestSuite() {
    function setUp() {
        jsUnity.log("set up");
    }

    function tearDown() {
        jsUnity.log("tear down");
    }

    function testLessThan() {
        assertTrue(1 < 2);
    }

    function testPi() {
        assertEquals(Math.PI, 22 / 7);
    }
}

// optionally wire the log function to write to the context
jsUnity.log = function (s) { document.write(s + "</br>"); };
var results = jsUnity.run(sampleTestSuite);
// if result is not false,
// access results.total, results.passed, results.failed
</script>
</pre>

上面的输出:

找到 2 个测试 设置 拆除 [通过] testLessThan 设置 拆除 [失败] testPi:实际值与预期不符:[预期] 3.141592653589793,[实际] 3.142857142857143 1 次测试通过 1 次测试失败

【讨论】:

  • 我已经在制定一个行动计划来做到这一点,感谢 Ates!稍后我可能会给你一些提交。
  • 我认为与上下文无关对于 javascript 测试框架来说并不是一件好事。浏览器怪癖可能会导致意外失败。通过 JsUnity 的测试在现实世界中可能会失败(在浏览器中)。所以恕我直言,这种库应该依赖于浏览器(在不同的浏览器中执行测试)
【解决方案2】:

Jasmine 看起来很有趣。

根据开发人员的说法,编写它是因为没有其他 JS 测试框架在单一产品中满足他们的所有需求,并且不需要 DOM、jQuery 或 window 对象之类的东西是明确的设计要点之一。

我正在考虑将它与env.js 和 Rhino/SpiderMonkey/V8/等一起使用。为我的 Web 应用程序编写客户端测试,这些测试可以在与 Python 单元测试相同的所有情况下轻松运行。 (setup.py test、BuildBot 等)

【讨论】:

    【解决方案3】:

    您可能想查看YUI Test。如果没有 DOM,它应该可以正常工作。

    【讨论】:

      【解决方案4】:

      这些在启用 javascript 的地方运行。

      scriptaculous unit-testing

      QUnit

      【讨论】:

      • 这些问题是他们需要一个浏览器环境,带有文档、DOM 等。此外,您列出的那些取决于它们各自的框架。
      【解决方案5】:

      还有JSpec

      JSpec 是一个极小但功能强大的测试框架。利用自己的自定义语法和预处理器,JSpec 可以以其他 JavaScript 测试框架无法做到的方式运行。这包括许多有用的速记文字、非常直观/易读的语法,以及不污染核心对象原型。

      JSpec 也可以通过多种方式运行,例如通过支持 Rhino 的终端,通过使用 DOM 或控制台格式化程序的浏览器,或者最后使用在后台运行浏览器并报告的 Ruby JavaScript 测试框架到终端。

      【讨论】:

        【解决方案6】:

        我只是 got Hudson CI to run JasmineBDD,至少对于纯 JavaScript 单元测试。

        【讨论】:

          【解决方案7】:

          JsUnit 有帮助吗?它是为在浏览器中运行而设计的,但看起来比较抽象。

          【讨论】:

          • 我确实尝试过,但它对 window.navigator 和其他东西唠叨不休。
          猜你喜欢
          • 1970-01-01
          • 2013-10-27
          • 1970-01-01
          • 1970-01-01
          • 2011-09-10
          • 2013-05-17
          • 2010-11-09
          • 2011-11-23
          • 1970-01-01
          相关资源
          最近更新 更多