Hollywood-style sign reading “Unit Tests”

What Hollywood Can Teach You About Writing Good Unit Tests

Joe Eames
Joe Eames
Dec 2, 2019 · 2 min read

There’s a surprising number of parallels between a good unit test and a good movie. Learning to write good unit tests is important since good unit tests are proven to increase velocity, while bad unit tests can have a detrimental effect on velocity. So let’s break down some of the elements of a good movie, and what that can teach us about good unit tests.

  • A good movie takes time to establish character and motivations — a good unit test has the important parts of the initial setup in the test itself, and not in the beforeEach.
  • A good movie doesn’t spend unnecessary time before the action — a good unit test puts uninteresting setup into the beforeEach.
  • A good movie shows characters undergoing meaningful change — a good unit test covers a meaningful state change.
  • A good movie shows the protagonist triumphing — a good unit test uses asserts appropriately to demonstrate correctness of code.
  • A good movie doesn’t try to develop too many characters (sorry Game of Thrones fans) — a good unit test covers a single state change.
  • A good movie has a clear beginning, middle, and end — a good unit test has the same with the AAA pattern: Arrange, Act, Assert.
  • A good movie has a single climax — a good unit test only tests a single state/state change
  • A good movie doesn’t take too long to end (sorry Return of the King fans) — a good unit test has a single “logical” assert and not a long series of different asserts.
  • A good movie is filmed with the audience in mind — a good unit test is written with readability in mind.
  • A good movie is filmed because someone had a story they needed to tell — a good unit test is written because a piece of code truly needed to be tested, and not just because a developer was jumping through hoops, or trying to hit a coverage requirement.
  • A good movie is easy to follow and doesn’t confuse the audience — a good unit test doesn’t make use of branching or looping logic.

Did I miss any other parallels between good movies and good unit tests? Leave a comment and share your thoughts.

And be sure to check out Thinkster’s brand new courses on Netlify, Gatsby, React, Vue, Angular and more at Thinkster.io.

Happy coding!

Visit Us: thinkster.io | Facebook: @gothinkster | Twitter: @GoThinkster


Joe Eames

Written by

Joe Eames

Mormon, Christian, Father, CEO of Thinkster.io, Organizer of @ngconf, @frameworksummit, React Conf, Front end developer, and Software Craftsmanship Evangelist.


Top Quality Tutorials

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade