Die einfachste Definition von Metadaten ist, dass sie Daten über Daten ist. Metadata sehr nützlich sein könnte. Als für das Markup gab es einige Metadaten eingebettet: id, kleine Beschreibung der Behauptung, Link zu testen. Während der Übertragung Markup Ich erkannte, dass mehr Metadaten wäre sehr hilfreich. In der neuen Version der Spezifikation gab es mehrere Arten von Aussagen:
alt: nicht verändert Text, tun Tests benötigen keine Veränderungen;
oldToBeChanged: Text verändert, Tests machen müssen geändert werden;
neu: total neuen Text, neue Prüfungen erforderlich sind;
newWritten: neuen Text, Tests, sondern bereits vorhanden (weil die Entwicklung von Tests Prozess begann, sobald der Entwurf der Spezifikation zur Verfügung stand);
newWrittenToBeChanged: neuen Text gibt es Tests, Entwurf spec verändert, so dass die Tests müssen geändert werden oder die vorhandenen Tests sind nicht genug.
Addiert man diese Art von Daten an das Markup erheblich vereinfachen würden die Zukunft der Arbeit - die Entwicklung von Tests. Denn nur durch das Betrachten einer Behauptung in der spec kann man leicht sagen, ob weitere Tests erforderlich sind, oder mehrere aktualisiert werden soll.
Mit den gegebenen Markup-Architektur ist, wurde beschlossen,) nutzen das title-Attribut in einem href-tag (der zweite Anker. Also das Markup aussehen würde:
<a name=assertionID> <! - shord Beschreibung als HTML-Kommentar -> Assertion hier <img src="pics/assert.gif"> <a href="path zu test" title=assertType> Test-ID, das ist das gleiche wie Behauptung ID </ a>
Das title-Attribut kann in einem Browser als Hinweis angesehen werden.
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.