Pure JS (6.2):结合 Rhino 和 Junit GUI 测试 JS
最近尝试了直接用 Rhino 启动 Junit ,刚开始就遇到了一些问题。因为 Java 注解在 JavaScript 中并不能起到什么作用,所以我选择了 Junit 3,并使用了 Junit 3 自带的swing GUI。最大的问题是 Junit 是通过 Class 名称加载测试类进行测试的。而 Rhino 的 Class 是动态生成的,名称也比较怪(比如 adapter1 之类),并不适合显示在界面上,因此我修改了 Juni 3 的源代码(见附件)。可以用“Pei Xiaoxing”作为关键字在源代码中搜索修改过的地方。
所有的测试案例都放在 PureJS 工程中的 scripts/test 目录下,可以用上一篇文章中介绍的方法启动测试:
1. scripts/test/sameple 目录下以“run”开头的 js 文件,加载并运行范例;
2. scripts/test/app/testAll.js, 测试 scripts/app 目录的 js 文件;
3. scripts/test/both/views.js,测试 webapp/both/views.js;
4. scripts/test/lib 目录下的 files.js、db.js、render.js,分别测试 scripts/lib 下对应的 js 文件;
5. script/test/servlets/servlets.js,测试 scripts/servlets 目录的 js 文件。
需要注意的是数据库操作的部分并未进行 mock,因此运行数据库相关的测试案例是需要先通过命令行启动 mongod。
下面以 scripts/test/sameple 目录下的文件为例进行介绍。
被测试的 JS 文件
add.js
add = {
two: function(a, b) { return a + b; },
three: function(a, b, c) { return a + b + c; }
}
TestCase 的使用
【编写测试案例】
编写测试案例的一般步骤如下:
1. 加载被测试的文件
2. 指定测试案例的名称
3. 编写测试函数
testAdd.js
load("scripts/test/sample/add.js");
testAdd = {
name: function() {
return "Test Add";
},
testAddTwo: function() {
Assert.assertEquals(3, add.two(1, 2), 0);
},
testAddThree: function() {
Assert.assertEquals(6, add.three(1, 2, 3), 0);
}
};
需要注意的是,JavaScript 中的数值实际上都是 float 类型的,因此使用 Assert.assertEuals 时需要指定误差范围(第三个参数)。但这里验证的是整数,因此误差为 0 。
【加载测试案例】
加载测试案例的一般步骤如下:
1. 加载 scripts/test/test.js,它定义了 test 函数
2. 加载包含测试案例的 js 文件
3. 调用 test 函数执行测试案例
runTestAdd.js
load("scripts/test/test.js");
load("scripts/test/sample/testAdd.js");
test(testAdd);
【执行测试案例】
参照上一篇文章创建 Run Congiguration,Arguments 设置为 scripts/test/sample/runTestAdd.js (如图)。
点击 Run 按钮执行(第一次执行后可以在快捷执行按钮的下拉菜单中看到)。
执行效果如下:
TestSuite 的使用
【编写测试案例案例集】
编写测试案例的一般步骤如下:
1. 加载要包含在测试案例集中的测试案例
2. 指定测试案例集的名称
3. 编写返回测试案例数组的 suite 函数
testSuite.js
load("scripts/test/sample/testAdd.js");
load("scripts/test/sample/testMinus.js");
testSuite = {
name: function() {
return "Test Suite";
},
suite: function() {
return [ testAdd, testMinus ];
}
};
【加载测试案例集】
加载测试案例的一般步骤如下:
1. 加载 scripts/test/test.js,它定义了 test 函数
2. 加载包含测试案例的 js 文件
3. 调用 test 函数执行测试案例
runTestSuite.js
load("scripts/test/test.js");
load("scripts/test/sample/testSuite.js");
test(testSuite);
【执行测试案例集】
Arguments 设置为 scripts/test/sample/runTestSuite.js ,执行效果如下:
TestSuite 的嵌套
【编写嵌套测试案例集】
测试案例集是可嵌套的,即一个测试案例集可以被包含在另一个测试案例集中。这在需要同时执行多个测试案例集时很有用。
编写嵌套测试案例的一般步骤如下:
1. 加载要包含在嵌套测试案例集中的测试案例集或测试案例
2. 指定嵌套测试案例集的名称
3. 编写返回测试案例集和测试案例数组的 suite 函数
nestedSuite.js
load("scripts/test/test.js");
load("scripts/test/sample/testSuite.js");
nestedSuite = {
name: function() {
return "Nested Suite";
},
suite: function() {
return [ testAdd, testSuite ];
}
};
这个嵌套案例集包含了一个普通的测试案例和一个测试案例集。
【加载嵌套测试案例集】
加载嵌套测试案例的一般步骤如下:
1. 加载 scripts/test/test.js,它定义了 test 函数
2. 加载包含测试案例集的 js 文件
3. 调用 test 函数执行嵌套测试案例
runNestedSuite.js
load("scripts/test/sample/nestedSuite.js");
test(nestedSuite);
【执行嵌套测试案例集】
Arguments 设置为 scripts/test/sample/runNestedSuite.js ,执行效果如下:
分享到:
相关推荐
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1121314
Rhino教程:用Rhino制作一把螺丝刀.doc
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1097596
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1136195
在Rhino JavaScript引擎中使用字节数组 注意 由该代码制成的字节数组可以与Java中的字节数组不同,但它似乎可以像Java字节数组一样完美地工作。 用 let b = ( new ByteArray ( size ) ) . init ( ) ;
rview(rview) 犀牛模型查看器 安装依赖项 yarn 在开发模式下启动应用程序(热代码重新加载,错误报告等) quasar dev 注意:您可能需要先安装quasar cli yarn global add @quasar...良好的查询字符串测试网址应为
在Rhino和Grasshopper上,您可能会或可能不知道的一些很酷的东西和鲜为人知的事实。 犀牛 :rhinoceros: 向我解释NURBS 去看看这个奇妙的解释: 在Rhino中学习建模 上有一个很棒的其中展示了如何使用一种持续约90...
Rhino就是JavaScript引擎,它的目的就是实现Java与JavaScript的互操作性。rhino-1.7R1.jar Envjs一个纯js方式在无浏览器环境下模拟浏览器的行为。envjs-1.2.js 一般网站js中都会用到jauery,所以还用了jauery.js
Rhino_Debugger Rhino引擎的JS调试工具 直接可运行Jar
此存储库包含FeedHenry Rhino应用程序的$ fh.sec的旧版实现。 要使用,只需将sec.js文件拖放到应用程序中,然后在应用程序中引用它即可。 它可以与JS SDK一起使用,也可以独立使用。 如果它与JS SDK一起使用,请...
JDK7是Rhino和BWMirror所需的版本,不保证其他JDK可以工作。 安装Git。 将此存储库导入到您喜欢的IDE。 地图包和ChaosLauncher配置 安装此页面中链接的地图包,并按照说明自动配置ChaosLauncher。 这个怎么运作 ...
在 OSX 上使用 Rhino 和 Python 需要 Rhinoceros 3D、Python 源库和文本编辑器。 Rhino 的(目前免费的)OSX 版本可以从这里下载: 推荐使用 Komodo Edit 作为文本编辑器,因为它为 IronPython 和 RhinoScript ...
Rhino.Inside:registered:.Revit 请参阅 ,以获取有关如何使用该项目的更多信息。 下面列出的部分为想要为该项目或Wiki做出贡献的开发人员提供了有关代码库的更多信息。 概述 Rhino.Inside:registered:技术允许...
Java直接调用js文件框架rhino-1.7.9源代码 https://github.com/mozilla/rhino/releases
介绍该演示应用程序展示了如何使用Jasmine.js + Env.js + Rhino作为Web应用程序中javascript的测试框架。 Jasmine.js 是一个行为驱动的开发框架,用于测试您JavaScript代码。 它不依赖于任何其他JavaScript框架。 它...
NULL 博文链接:https://lihong11.iteye.com/blog/1538205
Android 中不在用webview的情况下 执行js代码并得到返回值
Rhino 4.0 SR9 正式版注册机 注册方法:用Rhino4.exe覆盖原文件,反复用注册机直到成功为止