8

我致力于开发包含 javascript 的 web 东西,这些东西在某种程度上包含更多的逻辑,而不仅仅是动画和移动值。我想为这种逻辑实现一些单元测试。

我想找到一些方法来用 javascript 编写这些测试,并让它们在我在 maven 中构建 web 项目时运行。由于我要测试的代码处理包含在方法或对象中的逻辑内容,我觉得我不应该让服务器运行。另外,我读过Rhino之类的东西,这让我觉得不需要为了执行javascript而从某个地方启动浏览器。

我并不特别关心浏览器的差异——我很少发现我在那个领域遇到了问题,而且当我这样做时,总是与样式或罕见的 DOM 问题有关。我想测试我可以添加一个和一个并最终得到两个。

我搜索了一些,发现了许多用于 javascript 单元测试的框架。同样在过滤掉我挑剔的需求后,我仍然可以找到一些产品。不过,这些事情往往会导致我进入死网页。我发现http://code.google.com/p/javascript-test-maven-plugin/看起来不错,但它仍处于测试版,我正在努力让我的 maven 找到存储库。

有没有人有一些建议或提示?

查看 javascript 单元测试的一个原因是该语言似乎非常适合它。在 Java 中使用模拟框架后,我经常发现我最终会得到伪闭包的东西和符号,如果我在 javascript 中做同样的事情,它们就会消失 - 除了强加结构和与 maven 的测试集成之外,你几乎不需要测试框架阶段和詹金斯。

4

2 回答 2

8

我一直在寻找同样的东西。

我从未使用过它(刚开始研究 javascript 单元测试),但 Jasmine 似乎很受欢迎。

https://github.com/jasmine/jasmine

所以自然有一个maven插件。

https://github.com/searls/jasmine-maven-plugin

于 2013-05-15T13:58:37.233 回答
0

这是一个替代方案:junit-js

它是一个简单的 JUnit 运行器,采用 javascript 编写的单元测试并使用 Nashorn 或 Rhino 运行它们。

还有一个可用于 Eclipse Junit 插件的补丁,因为这个插件“要求所有测试类都是 java 类”。

如何使用?

  • 将以下依赖项添加到您的项目中:
<dependency>
    <groupId>com.belteshazzar</groupId>
    <artifactId>junit-js</artifactId>
    <version>1.0.0</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
</dependency>
  • 编写你的测试(在 javascript 中)
function testDummy01() {
    print("testDummy01");
    var x = "5";
    assertEquals("x should be 5", 5, x);
}

function testDummy02() {
    print("testDummy02");
    fail("not implemented");
}
  • 最后写一个测试套件
import org.junit.runner.RunWith;
import uk.co.benjiweber.junitjs.JSRunner;
import uk.co.benjiweber.junitjs.Tests;

@RunWith(JSRunner.class)
@Tests({
    "/uk/co/benjiweber/junitjs/examples/DummyJSTest.js",
    "SimpleJSTest.js",
    "/uk/co/benjiweber/junitjs/other/FredsJSTest.js",
    "../other/FredsJSTest2.js",
    "sub/SimpleJSTest.js"
})
public class ExampleTestSuite    {}

参考:

于 2020-05-20T09:06:26.067 回答