Was ist ein "Assertion Framework"?

10

Ich habe gerade über das Unit-Test-Framework von js-test-driver gelesen, als ich herausfand, dass die Leute hinter dem Framework beabsichtigen, es in ein Assertion-Framework zu integrieren . Was ist ein Assertionsrahmen? Ist es eine Art Unit-Testing-Framework? Wenn dies der Fall ist, was ist spezifisch für solche Frameworks?

Eldros
quelle

Antworten:

9

Ein Beispiel für ein Assertion Framework wäre Hamcrest, das in JUnit 4 integriert wurde. Hamcrest führt keine Tests durch, sondern bietet lediglich eine aussagekräftige Möglichkeit, Assertions zu schreiben.

Behauptung der Gleichheit im alten JUnit-Stil:

assertEquals(constant, underTest);
// or for doubles
assertEquals(3.5, underTest, .001); // within 1/1000th

Behauptungen zur Gleichheit im Hamcrest-Stil:

assertThat(underTest, Is.EqualTo(constant));
// or for doubles
assertThat(underTest, Is.EqualTo(3.5).Within(.001));

Im Wesentlichen können Sie mit einem Assertion-Framework Ihre Assertions auf leicht erweiterbare Weise ausführen. Da sich das Assertion-Framework nur auf Assertions konzentriert, kann es die Arbeit viel besser erledigen als ein Tool, das auch Tests sammeln und ausführen muss. NUnit hat auch den Hamcrest-Ansatz für Behauptungen übernommen. Sie würden Hamcrest nicht verwenden, um Ihre Tests auszuführen, sondern nur, um die Aussagen zu schreiben.

Berin Loritsch
quelle
2

JsTestDriver befasst sich hauptsächlich mit der Bereitstellung eines Testläufers, dh der Art und Weise, wie Sie die Tests ausführen.

Es bietet ein integriertes Assertion-Framework, das im Stil xUnit ist. Dies wird verwendet, um die Tests tatsächlich zu schreiben (z. B. assertTrue, assertEquals usw.). Sie können jedoch auch alternative Assertion-Frameworks einbinden. Derzeit sind Plugins für Unit und Jasmine verfügbar, die Aussagen im BDD-Stil bieten.

rlayte
quelle