快速业务通道

Jacks:Java的兼容性测试 开放源码之路 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
“基本上,您设计一个简单的源文件来测试问题,将它放在特定的 Jacks 格式中,然后运行 Jacks。如果编译器结果与所期望的结果不一样,它打印出错误。”这里是 Jacks 主页上教程中有关添加新测试案例的一例:

// File SynchronizedInterface.java

public synchronized interface SynchronizedInterface {}

使用 Jikes 编译时,生成以下错误:

% jikes SynchronizedInterface.java Found 1 semantic error compiling "SynchronizedInterface.java": 3. public synchronized interface SynchronizedInterface {} <----------> *** Error: synchronized is not a valid interface modifier.

如果很快看一下 JLS 的第 9.1.1 节,会发现 synchronized 在该上下文中不是合法的修饰符。如果尝试使用早期发行版 JDK 中的 Javac 编译器来编译相同的类,则不会生成错误(该错误在稍后的发行版中得到修正)。

% javac SynchronizedInterface.java

现在既然问题得以重现,可以通过以下步骤来对 Jacks 测试套件添加回归测试案例:

了解应该将测试案例放在哪个目录中

编写回归测试

在 Jacks 框架中运行新测试

tcltest 框架中回归测试的格式是:

tcltest::test NAME DESCRIPTION { COMMANDS } EXPECTED_RESULT

这是 JLS 第 9.1.1 节中的第一个测试,所以 NAME 是 9.1.1-1。

该测试案例在目录 tests/jls/interfaces/interface-declarations/interface-modifiers (位置基于 JLS 节的名称)中。

DESCRIPTION 可以是任何想要的内容。

COMMANDS 一节包含了所有 Tcl 命令,但大多数情况只需要 Jacks 中的 saveas 和 compile 方法。

saveas 命令使用两个自变量:文件名和将保存到文件中的数据。

saveas SynchronizedInterface.java \

{public synchronized interface SynchronizedInterface {}}

compile 命令使用任意数量的命令行自变量,并将它们传递给 Java 编译器。它将返回 PASS、FAIL 或 WARN 来表明编译器的退出状态。

EXPECTED_RESULT 是希望从 compile 命令获得的结果。

在该接口示例中,编译应该不成功。因此完整的回归测试应该类似于:

tcltest::test 9.1.1-1 {should generate error on synchronized interface} { saveas SynchronizedInterface.java \ {synchronized interface SynchronizedInterface {}} compile SynchronizedInterface.java } FAIL

Jacks:Java的兼容性测试 开放源码之路(3)

时间:2011-02-23

检验结果

运行测试并检查结果是完全自动的,因此可以真正地休息一下,看看出现的结果。Jacks 框架在测试目录中递归下降,运行它所找到的所有测试。

如果一切正常,就不打印任何消息。如果测试失败,将打印有关失败的描述,如 Mo Dejong 在 清单 1 中显示的那样。该例演示了 Javac 中因为第一个构造器调用第二个构造器,第二个又调用第一个所造成的错误。JLS 规定这是非法的(第 8.8.5.1 节),因此如果检测到这种情况,Java 编译器必须用信号通知该错误。

让我们看看 Jikes 对于同一测试案例是如何做的。在 清单 2 中,我们将使用 Jacks 中的一些特性,可以让您将模式作为 Jacks 脚本的第三个自变量传递。将跳过那些名称与模式不匹配的测试案例。在这个小案例中,模式就是测试案例的名称。在该例中,请注意我们所感兴趣的那个测试案例是如何通过的,其它测试案例是如何跳过的。上面的输出表明在 Javac 编译器中找到的错误在 Jikes 中并不存在。

尽管人类可读的结果非常有用,但在您有许多要处理的测试案例的情况下,它们很快就会变得非常难于管理。Jacks 最近庆祝了一个重要的里程碑:现在它包含了逾 1,000 个 JLS 独立测试案例。有了这么多的测试案例,没人能够记住在某一时刻哪些

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号