Jacks:Java的兼容性测试 开放源码之路 - 编程入门网
“基本上,您设计一个简单的源文件来测试问题,将它放在特定的 Jacks 格式中,然后运行 Jacks。如果编译器结果与所期望的结果不一样,它打印出错误。”这里是 Jacks 主页上教程中有关添加新测试案例的一例:
// File SynchronizedInterface.java public synchronized interface SynchronizedInterface {} 使用 Jikes 编译时,生成以下错误:
如果很快看一下 JLS 的第 9.1.1 节,会发现 synchronized 在该上下文中不是合法的修饰符。如果尝试使用早期发行版 JDK 中的 Javac 编译器来编译相同的类,则不会生成错误(该错误在稍后的发行版中得到修正)。 % javac SynchronizedInterface.java 现在既然问题得以重现,可以通过以下步骤来对 Jacks 测试套件添加回归测试案例: 了解应该将测试案例放在哪个目录中 编写回归测试 在 Jacks 框架中运行新测试 tcltest 框架中回归测试的格式是:
这是 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 命令获得的结果。 在该接口示例中,编译应该不成功。因此完整的回归测试应该类似于:
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |