Assertions Markup und

Es ist sehr wichtig, einen guten Prozess beim Schreiben der Testsuite. Ich werde über die eine, die für JLS verwendet wurde, zu sprechen.
Nach wie vor ist das Endprodukt der Anzahl der Prüfungen angegeben. Es besteht ein Zusammenhang zwischen den Tests und der Spezifikation. Die Behauptung gesteuerten Prozess gibt eine Vorstellung von dem, was jede Gruppe von Tests tatsächlich Kontrollen in der Spezifikation. Mit Hilfe dieser Beziehung die Entwickler die Reichweite berechnen kann, nutzen Sie die Liste der Behauptungen, auf denen die Tests nicht geschrieben wurden, etc.
Behauptung ist eine Aussage aus einer Spezifikation, die getestet werden können. Und der erste Schritt ist, alle Behauptungen, die in der Spezifikation zu identifizieren. Danach kann der Entwickler Tests schreiben.
Beispiel für die Behauptungen aus der Java Language Specification: 
- Einen Compiler-Fehler auftritt, wenn die gleiche Modifier scheint mehr als einmal in einer Interface-Deklaration.
- Die binären Namen eines Mitglieds Typ besteht aus den binären Namen seines unmittelbar einschließenden Typ, gefolgt von $, gefolgt von den einfachen Namen des Mitglieds.
- Eine continue-Anweisung darf nur erfolgen, in einer Weile zu tun, oder für die Anweisung.
Es könnte viele Aussagen, die nicht überprüfbar oder Unsicherheit verbunden sind. Manchmal werden solche Aussagen gehören Wörter wie "möglich" oder "vielleicht". Es ist nicht wahr, dass wenn in einem Satz das Wort "kann" es ist nicht überprüfbar, aber normalerweise ist es so.
Beispiele für nicht prüfbare Aussagen:
- Wir empfehlen nicht, wie "gemischte Schreibweise" für Array-Deklarationen.
- Situationen, in denen die Klasse eines Objekts ist nicht statisch bekannt kann zu Laufzeit-Fehlern Typ.
- Wenn wirft jedoch Auswertung eines Ausdrucks eine Ausnahme, dann ist der Ausdruck gesagt wird abrupt abgeschlossen.
Es gibt viele Diskussionen und Streitigkeiten über die Behauptungen. Einige sagen, dass Beispiele nicht als Behauptungen behandelt werden. Andere sagen, dass jede Aussage eine Behauptung ist, und es gibt zwei Arten von ihnen: überprüfbare und nicht überprüfbar. Meine persönliche Meinung ist, dass eine Behauptung ist sicherlich etwas, überprüfbar. Und in den meisten Fällen Beispiele sind Behauptungen, nur weil der Test schriftliche Prüfung der speziellen Beispiel kann.
Der Prozess der Ermittlung Behauptungen in der Spezifikation heißt Markup. Es gibt viele Ansätze. Aber in jedem Fall muss der Benutzer in der Lage, Informationen darüber, ob die Aussage ist eine Behauptung und irgendwie unterscheiden, eine Behauptung von einem anderen zu gelangen. Es könnte ein separates Repository mit Zuordnung von Aussagen und ihre id's Aussagen sein. Ich mag die Idee der Integration der Markup in der Spezifikation. Dieser Ansatz wurde gewählt, die für den Bereich der Sprache Java SE Testpaket. Die JLS wurde in FrameMaker geschrieben. Mit dem Export-Mechanismen die PDF-und HTML-Versionen erstellt wurden. Die HTML-Version wurde bei der Erstellung der Test-Suite verwendet.
In JLS und JLS-2 einige spezielle Anker den Anfang und das Ende einer Aussage identifiziert. Ergänzende Informationen war die assertionID und kurze Zusammenfassung der Aussage. Das Ende Anker war ein Bild und einen Link auf die Probe. Die HTML-Ansicht und Code-Ansicht auf den entsprechenden Abbildungen. Die Behauptung, id's sind arr033, arr034, arr020, etc.
Die allgemeine Idee kann wie folgt beschrieben werden:
<a name=assertionID> <! - shord Beschreibung als HTML-Kommentar ->
Assertion hier
<img src="pics/assert.gif"> <a href="path zu test"> Test-ID, das ist das gleiche wie Behauptung ID </ a>
Wenn einzelne Aussagen in verschiedenen Teilen der Spezifikation werden von einem Test der erste Tag getestet wird so etwas wie arr033_0, arr033_1, arr033_2 werden.
Diese Art von Architektur war für JLS und JLS-2 verwendet. Es war leicht für JLS3 geändert, aber die Grundidee wurde beibehalten. Ich kenne einige Beispiele von Ansätzen mit nicht-statischen Behauptung IDs in einem separaten Repository, wo sich einige ID-Hash-Wert berechnet auf der Grundlage des Inhalts gehalten. Aus mehreren Gründen Dabei zeigte sich, als nicht eine sehr gute Lösung. Es ist immer ein schwieriger Prozess der Migration auf die neue Version der Spezifikation. Aber meiner Meinung nach ist es viel einfacher mit der statischen ID's in der Spezifikation eingebettet.
Anker , Behauptung , assertionID , FrameMaker , Java , Java Language , Java Language Specification , Java SE , JDK , JDK6 , JDK7 , JLS , Sprache , Markup , PDF , spec , Spezifikation , Erklärung , Tests



