O que é uma "estrutura de afirmação"?

10

Eu estava lendo sobre a estrutura de teste de unidade js-test-driver, quando descobri que os indivíduos por trás da estrutura pretendem que ela seja integrada a uma estrutura de asserção . O que é uma estrutura de asserção? É um tipo de estrutura de teste de unidade? Se for esse o caso, o que é específico para essas estruturas?

Eldros
fonte

Respostas:

9

Um exemplo de um Assertion Framework seria o Hamcrest, que foi integrado ao JUnit 4. O Hamcrest não executa testes, apenas fornece uma maneira expressiva de escrever asserções.

Antiga declaração de igualdade de estilo JUnit:

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

Afirmações de igualdade no estilo Hamcrest:

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

Essencialmente, uma estrutura de asserção permite que você execute suas asserções de uma maneira facilmente extensível. Como a estrutura de asserções se concentra apenas em asserções, ela pode fazer o trabalho muito melhor do que uma ferramenta que também precisa coletar e executar testes. A NUnit também adotou a abordagem de Hamcrest às afirmações. Você não usaria o Hamcrest para executar seus testes, apenas para escrever as afirmações.

Berin Loritsch
fonte
2

O JsTestDriver se preocupa principalmente em fornecer um executor de teste, ou seja, a maneira como você executa os testes.

Ele fornece uma estrutura de asserção integrada, com estilo xUnit. Isso é usado para escrever os testes (por exemplo, assertTrue, assertEquals, etc). No entanto, também permite que você faça o plug-in em estruturas de asserção alternativas. Atualmente, existem plugins disponíveis para Unit e Jasmine, que oferecem asserções no estilo BDD.

rlayte
fonte