Jump to the navigation menu

Tests can assert multiple things

Similar to "a method should only have one return statement", I've seen similar advice when working with tests: "Tests should only have a single assertion".

I don't think this is true, and in my experience, you need multiple assertions to have a thorough test.

And, whilst similar assertions add some duplication, they can make the intent clearer and give better error messages.

Instead, I focus on one test case per test.

If I'm testing the following:

  • A blog page exists.
  • Only post nodes are visible.
  • Only published posts are visible,
  • Posts are returned in a specified order.

These will be split into separate tests - making it easier to read and maintain the code and have faster execution times by running only the tests I want with the minimum amount of code in each - regardless of how many assertions are in each.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an certified Drupal Triple Expert with 18 years of experience, a Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.