
建立一个标记和开发测试的全过程非常耗时。 当它看来,工作是完成时,一个规范的新版本发布。 接下来会发生什么? 当然有一个测试套件的新版本的需要。 新的测试必须是书面的,旧更新,甚至删除。
最好的办法,开始是做标记。 这个任务可以分为两个子任务:
转移的标记非常简单用手做它:
发现在旧规格标记标签。
找到最好的地方,插入新的规范版本标记。
插入标记。
如果只有10个断言 - 这工作是小菜一碟。 但如果有成千上万它是一个艰苦的工作,应该是自动的。 最难的是找到一个新的标记标签的适当场所。 很难仅仅因为需求发生了变化。 对于JLS2到JLS3迁移过程中flollowing alrorithm被用来:
每个断言是圆的HTML锚。 他们都应该被转移使用这种算法。
轩1吨:如果有些标签被转移,有很大的可能性,即在旧规范的下个标签后会被认为是转移一人的位置。
提示2:算法应该检查,第二锚后应第一个位置,而不是太远非如此。
- 看看前,后规范旧标签的文本。 新规范中找到它。 如果其中一
没有改变 - 找到答案。 通常的长度应为1-2 sentances,至少有60个字符长。 如果没有一个或几个sentances发现 - 跳过此步骤。 - 试着做在同一个(1),但删除从近文本标记周围的所有HTML标签。 如果没有找到 - 跳过此步骤。
- 尝试采用的算法,它试图找到新的规格类似的文本。
一 。 使用步骤(1)及(2),但desrease了在一个循环中搜索文本的长度,直到sentance发现或长度太短。 实际工作表明,这个数字应不低于20。
b。 如果步骤(1)及(2)或(3A)发现了几个sentances增加要搜寻的文字,直到文本是在新的规范或上限(铁140字)达到发现长度。 使用提示,找到最佳匹配的文本。
采用算法可同时用于忽略的HTML标签,并利用这些机会。 算法的纯文本,HTML或XML编写规范有效。
该算法实现JLS2 -> JLS3标记传输工具。 84%的标记标签自动传输。 其余的是手动完成的。
标签: 锚 , 断言 , JLS的 , 标记 , 标记转移 , 规格 , 测试

这是非常重要的是要有一个好的过程,而写的测试套件。 我会谈谈这对于JLS的使用之一。
正如前面提到的最终产品的测试的数量。 之间有一个测试和规范的关系。 断言驱动的过程给出了一个主意了每个测试实际上是在规范的检查组。 利用这种关系,开发人员可以计算的覆盖面,得到了断言哪些测试是不写,等名单
断言是一个从一个可以被测试规范的声明。 而首要的第一步是确定在规范所有断言。 在这以后,开发人员可以编写测试。
断言的例子从爪哇语言规范: 
- 一个编译时错误,如果同样的修改多次出现在接口声明。
- 一个成员类型的二进制名称由封闭类型,其立即美元,其次,由该成员的简单名称,后面的二进制名称。
- continue语句只能出现在一段时间,做或声明。
有可能是是非可测试的,或涉及不确定性的许多发言。 有时候,这些陈述包括“可能”或“可能”字样。 这是不正确的,如果一个句子有一个“可”字是不可测试的,但通常是这样的。
举例非测试的语句:
- 我们不建议这样的数组声明为“混合符号”。
- 那里的情况不是静态已知的对象类可能会导致运行时类型错误。
- 但是,如果一个表达式的评价抛出一个异常,那么表达式是说突然来完成。
有许多讨论和争议的断言。 有人说,不应作为例子断言处理。 也有人说,每个语句是断言,有两个种:可测试和非测试的。 我个人的看法是,一个断言肯定是可测试的。 而且在大多数情况下的例子只是因为测试可以写检查特殊的例子断言。
在规范的过程称为断言识别标记。 有许多方法。 但在任何情况下,用户必须能够获取信息的声明是否是断言,不知怎么区分从另一说法。 有可能与他们的断言和ID的声明映射到一个单独的仓库。 我喜欢融入规范标记的想法。 这种方法是选中,是因为语言方面的Java SE的测试套件。 JLS的是写在FrameMaker中。 随着出口机制的PDF和HTML版本被创造了。 HTML的版本的过程中使用测试套件的创建。
在JLS的和一些特殊的锚JLS的2所确定的开始和结束的断言。 附加信息是assertionID短的发言摘要。 最终锚图像和链接的考验。 HTML视图和代码视图显示在相应的插图。 断言ID的是arr033,arr034,arr020等
总的想法可以被描述为:
的<a name=assertionID> < - HTML注释shord描述为“ - >
在这里断言声明
<img src="pics/assert.gif">的<a href="path到test">测试ID,这是一>一样断言编号</
如果在不同部位的规范是由一个单独的语句测试测试的第一个标签将类似arr033_0,arr033_1,arr033_2。
这种体系结构是用于JLS的和JLS的2。 这是为JLS3略加修改,但主要的想法是保存。 我知道与非静态断言标识的一些方法的例子在一个单独的仓库,其中ID是一些散列值计算的基于内容的保存。 几个原因,是不是出现了一个很好的解决。 总有一个艰难的过程迁移到新版本的规格。 但在我看来,这是许多与静态ID的更容易嵌入到规范。
标签: 锚 , 断言 , assertionID , FrameMaker中 , 爪哇 , Java语言 , Java语言规范 , Java SE中 , JDK的 , JDK6 , JDK7 , JLS的 , 语言 , 标记 , PDF格式 , 规格 , 规范 , 语句 , 测试
今天是一个伟大的日子。 我会尽量解释原因。 正如我在我的介绍员额我们的队伍是创建几个不同的TCK的。 该地区是我的工作就是所谓的郎 - 我开发Java语言测试。 很久以前,从现在起超过2年,我们开始工作 。 我们需要解决的过程中常常出现的许多问题,规格变化(我答应写更多关于这一点)。 我们的团队完成的JCK 6a中,郎测试是本的JCK的一部分。 今天我运行脚本和覆盖面,我们终于可以说我们已经覆盖了99%JLS的3断言。 为了更准确,我们有99.4%。 这意味着,我们写在JLS的3项测试的99 sentances%,我们已经为可能测试的标记。 是不是很酷? 我敢打赌,它是!
这项工作当然还没有结束,也不会如此-有很多原因,需要更多的测试:
- 深度报道的改进 - 几个断言,需要更多的测试;
- 有sentances是可测试的,但我们并没有标记为可测试的有几个潜在的原因;
- JLS的将有4了,我们应该开始它的工作,尽快。
不同的人可能有问题,在标题对面的答案。大多数人会回答说:“当然。” 事实上,99%几乎是100%。 什么是100% - 这是一个完美。 99%看起来不错,这是伟大的。 但是我们必须明白这个数字代表什么,什么可以改进。 我的观点是:“是的,这是伟大的,巨大的,巨大的,但没有,这还不够,我想要更多,甚至超过100%”,这就是为什么我打算建立一个深入报道计算脚本。
所有Sun开发谁做的JCK朗工作,这要感谢的人谁帮助(尤其是对编译器团队),当然也非常感谢所有的开发人员使用Java感谢谁 
Java世界变得更加兼容,更安全!
标签: 断言 , 爪哇 , Java语言 , JLS的 , 语言 , 规范 , 规格 , 太阳 , TCK的 , 测试