Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I was reading about the js-test-driver unit-testing framework, when I found out that the guys behind the framework intend it to be integrated with an assertion framework. What is an assertion framework? Is it a kind of unit-testing framework? If it is the case what is specific to such frameworks?

share|improve this question
up vote 9 down vote accepted

An example of an Assertion Framework would be Hamcrest which was integrated into JUnit 4. Hamcrest does not run tests, it merely provides an expressive way to write assertions.

Old JUnit style equality assertion:

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

Hamcrest style equality assertions:

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

Essentially, an assertion framework allows you to perform your assertions in an easily extensible manner. Because the assertion framework focuses on assertions alone, it can do the job much better than a tool that has to collect and run tests as well. NUnit has also adopted the Hamcrest approach to assertions. You would not use Hamcrest to run your tests, merely to write the assertions.

share|improve this answer

JsTestDriver is primarily concerned with providing a test-runner, i.e. the way that you execute the tests.

It provides a built in assertion framework, which is xUnit in style. This is used to actually write the tests (e.g. assertTrue, assertEquals, etc). However, it also allows you to plugin in alternative assertion frameworks. There are currently plugins available for Unit and Jasmine, which offers BDD style assertions.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.