`
裴小星
  • 浏览: 264992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8ccf5db2-0d60-335f-a337-3c30d2feabdb
Java NIO翻译
浏览量:27804
F3e939f0-dc16-3d6e-8c0b-3315c810fb91
PureJS开发过程详解
浏览量:74006
07a6d496-dc19-3c71-92cf-92edb5203cef
MongoDB Java ...
浏览量:62903
社区版块
存档分类
最新评论

Pure JS (6.2):结合 Rhino 和 Junit GUI 测试 JS

阅读更多
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 ,执行效果如下:

8
2
分享到:
评论

相关推荐

    Pure JS (6.1):使用 Rhino Shell 和 Debugger 运行和调试 JS

    **标题解析:** "Pure JS (6.1):使用 Rhino Shell 和 Debugger 运行和调试 JS" 这个标题表明我们将深入探讨如何利用Rhino Shell和JavaScript的调试工具来执行和调试纯JavaScript代码。Rhino是Mozilla开发的一个开源...

    Pure JS (4.3): pure.db.js 的实现(基于 MongoDB Rhino Driver)

    《纯JavaScript实现:pure.db.js基于MongoDB Rhino Driver详解》 在JavaScript的世界里,数据库操作通常依赖于服务器端的语言支持,如PHP、Python或Node.js等。然而,有一种另辟蹊径的方式,即通过Rhino JavaScript...

    PureJS (6.3):Rhino 中的日志与 proxy 对象

    《PureJS (6.3):Rhino 中的日志与 Proxy 对象》 在JavaScript的世界里,Rhino是一个非常特别的存在。它是由Mozilla开发的一个开源的JavaScript引擎,它允许JavaScript代码运行在Java平台上,提供了丰富的Java对象...

    3D建模软件:Rhino二次开发-Rhino二次开发基础+几何形状创建+3D建模核心+3D打印等全套教程

    3D建模软件:Rhino二次开发.docx 3D建模软件:Rhino二次开发all.docx 3D建模软件:Rhino二次开发_3D建模核心概念.docx 3D建模软件:Rhino二次开发_3D打印与Rhino二次开发.docx 3D建模软件:Rhino二次开发_...

    Rhino教程:用Rhino制作一把螺丝刀.doc

    【Rhino教程:用Rhino制作一把螺丝刀】 在3D建模软件Rhino中创建一个复杂的对象,如螺丝刀,需要对软件的基本操作有深入理解。本教程将引导初学者通过实际操作学习Rhino的基本建模技术。Rhino 2.0版本被用于这个...

    深入浅出Rhino:Java与JS互操作

    《深入浅出Rhino:Java与JS互操作》是一本专注于探讨如何在Java环境中使用Rhino JavaScript引擎进行交互的书籍。Rhino是Mozilla基金会开发的一个开源JavaScript解释器,它完全用Java编写,使得JavaScript能够在Java...

    FF的js引擎rhino源码,java编写

    Rhino在JavaScript的世界里扮演着重要角色,因为它将JavaScript的动态性和灵活性带入了Java平台,使得开发者可以利用JavaScript进行服务器端编程、脚本控制、嵌入式应用等。 Rhino的源码对于学习JavaScript引擎内部...

    java运行js脚本引擎-----rhino

    - **测试与自动化**:在Java测试框架中,Rhino可用于编写和执行测试脚本,如JUnit测试中的复杂逻辑。 - **嵌入式脚本**:Java应用可以使用Rhino动态地加载和执行配置文件,使配置更为灵活和强大。 压缩包中的`...

    Pure JS (1): 在 jetty 上运行 JavaScript

    标题中的“Pure JS (1): 在 jetty 上运行 JavaScript”表明了本文主要关注的是如何在Jetty服务器上执行JavaScript代码,而不用依赖于其他非JavaScript的框架或库,如Node.js。Jetty是一个轻量级的Java Web容器,它...

    Rhino Mocks 单元测试必用

    Rhino Mocks 为 .NET 开发者提供了一种强大、灵活的工具来编写单元测试,提高了测试的效率和质量。通过深入理解和熟练使用 Rhino Mocks,开发者可以更好地保证代码的稳定性和可靠性,从而提升整个项目的软件工程实践...

    rhino-bytearray:在Rhino JavaScript引擎中使用字节数组

    在Rhino JavaScript引擎中使用字节数组 注意 由该代码制成的字节数组可以与Java中的字节数组不同,但它似乎可以像Java字节数组一样完美地工作。 用 let b = ( new ByteArray ( size ) ) . init ( ) ;

    rhino+javafx实现js脚本调试

    在"rhino+javafx实现js脚本调试"这个主题中,我们将深入探讨如何结合这两个技术来创建一个JS脚本调试环境。首先,Rhino作为一个JavaScript引擎,它的主要职责是解析和执行JavaScript代码。它支持ECMAScript标准,...

    Rhino转换Catia文件

    Rhino的精度取决于模型的复杂度和精度要求。 Rhino 的精度问题 Rhino是自由造型软件,具有高精度的特点。Rhino的精度问题主要体现在以下几个方面: 1. 双精度浮点值:Rhino使用双精度浮点值来计算模型的精度。这...

    基于Rhino引擎的低侵入式JavaScript内置对象扩展方法.pdf

    本文的主要贡献是提出了基于Rhino引擎的低侵入式JavaScript内置对象扩展方法,解决了Rhino引擎在客户端JavaScript脚本解析中的不足,提高了Rhino引擎的性能和可扩展性。 知识点: 1. Rhino引擎:Rhino引擎是一个...

    RHINO犀牛基础教程.doc

    RHINO 犀牛基础教程是 Rhino 软件的入门级教程,旨在帮助初学者快速掌握 Rhino 软件的基本操作和概念。该教程共分六章,每章节都对应 Rhino 软件的不同方面,包括软件介绍、工作流程、界面操作、图形绘制、基础曲面...

    rview:测试Rhino3dm.js的Web应用程序

    rview(rview) 犀牛模型查看器 安装依赖项 yarn 在开发模式下启动应用程序(热代码重新加载,错误报告等) quasar dev 注意:您可能需要先安装quasar cli yarn global add @quasar...良好的查询字符串测试网址应为

    env.rhino.1.2.js

    Rhino就是JavaScript引擎,它的目的就是实现Java与JavaScript的互操作性。rhino-1.7R1.jar Envjs一个纯js方式在无浏览器环境下模拟浏览器的行为。envjs-1.2.js 一般网站js中都会用到jauery,所以还用了jauery.js

Global site tag (gtag.js) - Google Analytics