Build Your Own Test Framework: A Practical Guide to Writing Better Automated Tests

  • 2h 19m
  • Daniel Irvine
  • Apress
  • 2023

Learn to write better automated tests that will dramatically increase your productivity and have fun while doing so. This book is a build-your-own adventure designed for individual reading and for collaborative workshops.

You will build an xUnit automated test framework using JavaScript: initially a clone of Jest, but adding a couple of neat features borrowed from RSpec, the genre-defining tool for behavior-driven development (BDD). Along the way, you will explore the philosophy behind automated testing best practices. The automated test runner is one of the most important innovations within software engineering. But for many programmers, automated testing remains a mystery, and knowing how to write good tests is akin to sorcery.

As the chapters of this book unfold, you will see how the humble test runner is an elegant and simple piece of software. Each chapter picks a single feature to build, like the "it" function or the "beforeEach" block. It picks apart the theory of why the feature needs to exist, and how to use it effectively in your own test suites. Every chapter ends with a set of ideas for extension points should you wish to explore further, alone or in groups. The book culminates in an implementation of test doubles and mocks—one of the most difficult and misunderstood concepts within automated testing.

By the end of the book, you will have gained a solid understanding of automated testing principles that you can immediately apply to your work projects.

What You'll Learn

  • Build an xUnit automated test framework
  • See how an automated test runner works
  • Understand the best practices for automated unit testing
  • Effectively use test doubles and mocks

Who This Book Is For

Software developers with JavaScript experience who are seeking to master the art of automated testing.

About the Author

Daniel Irvine is a freelance software developer based in London. He works with a variety of languages including C#, Clojure, JavaScript, and Ruby. When he’s not working, he spends time cooking, gardening and practicing yoga. He co-founded the Queer Code London meetup and is an active member of the European software craft community.

In this Book

  • Foreword
  • Introduction
  • Creating a Barebones Test Runner
  • Building a Function to Represent a Test Case
  • Grouping Tests
  • Promoting Conciseness with Shared Setup and Teardown
  • Improving Legibility with Expectations and Matchers
  • Formatting Expectation Errors
  • Automatically Discovering Test Files
  • Focusing on Specific Tests
  • Supporting Asynchronous Tests
  • Reporting
  • Shared Examples
  • Tagging Tests
  • Skipping Tests
  • Randomizing Tests
  • Deep Equality and Constraining Matchers
  • Test Doubles
  • Module Mocks


Rating 4.5 of 82 users Rating 4.5 of 82 users (82)
Rating 4.5 of 307 users Rating 4.5 of 307 users (307)