Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Testing with JUnit
Testing with JUnit

Testing with JUnit: Master high quality software development driven by unit tests

Arrow left icon
Profile Icon Appel Profile Icon Leonard Przybylski
Arrow right icon
$19.99 per month
Full star icon Full star icon Full star icon Full star icon Half star icon 4.3 (7 Ratings)
Paperback Aug 2015 200 pages 1st Edition
eBook
$14.99 $21.99
Paperback
$26.99
Subscription
Free Trial
Renews at $19.99p/m
Arrow left icon
Profile Icon Appel Profile Icon Leonard Przybylski
Arrow right icon
$19.99 per month
Full star icon Full star icon Full star icon Full star icon Half star icon 4.3 (7 Ratings)
Paperback Aug 2015 200 pages 1st Edition
eBook
$14.99 $21.99
Paperback
$26.99
Subscription
Free Trial
Renews at $19.99p/m
eBook
$14.99 $21.99
Paperback
$26.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Testing with JUnit

Chapter 2. Writing Well-structured Tests

In this chapter, we're going to learn how to write unit tests with a clean and consistent structure by means of the four-phase pattern, and outline why it is important to do so. We'll be explaining the purpose of a fixture, and how to get a clear definition of the relation between a component's behavior and its verification. Furthermore, we're going to gain insight on what to test, where to start, how to continue, and how to know when we are done. We'll be concluding with a discussion on the pros and cons of various testing naming conventions. In a nutshell, we will be going through the following topics:

  • The four phases of a unit test
  • Choosing the next functionality to test
  • Getting the test names right

The four phases of a unit test

Well-written unit tests follow a clean and consistent structure based on four exactly defined phases. In this section, we will learn about the purpose of each of those and delve into some subtleties of fixture setup and result verification.

Using a common test structure

 

"A tidy house, a tidy mind."

 
 --Old adage

The attentive reader may have wondered why our first test setFetchCount was segmented by the use of empty lines. To answer this question, let's have an in-depth look at each of these segments with the first listing of this section, showing the common structure of a unit test. There are minor refactorings and additional comments compared to the version in the last chapter to emphasize more on the separation.

Note

Note how the constant NEW_FETCH_COUNT replaces the literal value assigned previously to a local input variable. Literal numbers often tell little or nothing about their purpose because they emerge from nowhere like...

Choosing the next functionality to test

Now that you know how to structure a test properly, you still might feel a bit insecure about what to test, where to start, how to continue, and how to know when you are done. What follows will be a few heuristics to help you in mastering these hurdles.

Start with the happy path

Meszaros defines the happy path as the normal path of execution through a use case or the software that implements it; also known as the sunny day scenario. Nothing goes wrong, nothing out of the ordinary happens, and we swiftly and directly achieve the user's or caller's goal, [MESZ07]. Regarding the addition of an item to our timeline functionality, the happy path is made up of an item that gets sorted into a list of existing items, and hence, gets depicted at the correct chronological position.

But what makes it so important to start with it? Because it delivers the highest business value, and gets us closer to the component's expected capabilities. Once we...

Getting the test names right

Finding good names is one of the challenges of crafting software. You need to find them all the time and for everything: classes, methods, variables, just to name a few. Because of that, the last section of this chapter explains the particularities of naming tests and balances the pros and cons of common approaches and conventions.

Test prefix

What makes a name a good name? To quote Uncle Bob:

"Three things: Readability, readability, and readability!"

He defines this later on as clarity, simplicity, and density of expression, [MART09]. Though this sounds reasonable, it leaves us with the question of how to achieve these qualities when naming our tests.

Before the arrival of annotations in the Java language, it was necessary to distinguish tests from ordinary methods to be able to process them by the JUnit runtime. This is because the latter has to pick up each test separately, run it, and report the results. The technical solution was to prefix the name...

Summary

In this chapter, we've learned about the structure of a well-written unit test. We've got to know how to use the four phases, that is setup, exercise, verify, and teardown, to map a single test to a certain component behavior. We've addressed the different techniques to set up a test fixture efficiently and illustrated the relation of a behavior to its verification.

Once we were familiar with how to write a test, we've been concerned with what to test. We've understood why we should always start testing with happy-path scenarios and do the corner cases later on. Moreover, we've been introduced to how code coverage can help detect holes in our safety net.

In the last section, we've discussed the pros and cons of the various test naming conventions. We've learned about the difficulties to map behavior verification into a meaningful name, and showed some possibilities to reduce a test name to the essentials.

The next chapter will evolve our example...

Left arrow icon Right arrow icon

Description

JUnit has matured to become the most important tool when it comes to automated developer tests in Java. Supported by all IDEs and build systems, it empowers programmers to deliver software features reliably and efficiently. However, writing good unit tests is a skill that needs to be learned; otherwise it's all too easy to end up in gridlocked development due to messed up production and testing code. Acquiring the best practices for unit testing will help you to prevent such problems and lead your projects to success with respect to quality and costs. This book explains JUnit concepts and best practices applied to the test first approach, a foundation for high quality Java components delivered in time and budget. From the beginning you'll be guided continuously through a practically relevant example and pick up background knowledge and development techniques step by step. Starting with the basics of tests organization you'll soon comprehend the necessity of well structured tests and delve into the relationship of requirement decomposition and the many-faceted world of test double usage. In conjunction with third-party tools you'll be trained in writing your tests efficiently, adapt your test case environment to particular demands and increase the expressiveness of your verification statements. Finally, you'll experience continuous integration as the perfect complement to support short feedback cycles and quality related reports for your whole team. The tutorial gives a profound entry point in the essentials of unit testing with JUnit and prepares you for test-related daily work challenges.

What you will learn

  • Organize your test infrastructure and resources reasonably Understand and write well structured tests Decompose your requirements into small and independently testable units Increase your testing efficiency with on-the-fly generated stand-in components and deal with the particularities of exceptional flow Employ runners to adjust to specific test demands Use rules to increase testing safety and reduce boilerplate Use third party supplements to improve the expressiveness of your verification statements

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Aug 27, 2015
Length: 200 pages
Edition : 1st
Language : English
ISBN-13 : 9781782166603
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : Aug 27, 2015
Length: 200 pages
Edition : 1st
Language : English
ISBN-13 : 9781782166603
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 129.97
Test-Driven Java Development
$54.99
MASTERING UNIT TESTING USING MOCKITO AND JUNIT
$47.99
Testing with JUnit
$26.99
Total $ 129.97 Stars icon
Banner background image

Table of Contents

10 Chapters
1. Getting Started Chevron down icon Chevron up icon
2. Writing Well-structured Tests Chevron down icon Chevron up icon
3. Developing Independently Testable Units Chevron down icon Chevron up icon
4. Testing Exceptional Flow Chevron down icon Chevron up icon
5. Using Runners for Particular Testing Purposes Chevron down icon Chevron up icon
6. Reducing Boilerplate with JUnit Rules Chevron down icon Chevron up icon
7. Improving Readability with Custom Assertions Chevron down icon Chevron up icon
8. Running Tests Automatically within a CI Build Chevron down icon Chevron up icon
A. References Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.3
(7 Ratings)
5 star 57.1%
4 star 28.6%
3 star 0%
2 star 14.3%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




SuJo Sep 19, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I always appreciate a book that starts off with a 'Getting Started' section that actually get's you started but left out a huge history lesson. The first page clearly explains why unit testing is so important, and how regression occurs in projects. The first graphical depiction of a unit test was displayed around page 4, and was I the only person who spotted the depth of inheritance value of 2? That's superb! As for my favorite chapter it would be 2, and it's simply because it was the 'who, what, when, where, and why' chapter. It really set my expectations of the proceeding chapters, if I can understand what's suppose to occur than I can program for it to occur properly. The quotes throughout the book are neat as well, they break up the huge chunks of information that needs to be digested and are just subtle enough to not annoy you.By the end of the book you'll understand why unit testing is important, how to get started, and how to get some automated tests going while you sleep over night. The ebook edition has some nice color coded graphics that really speak to the text, I find this to be extremely helpful as well as mandatory. Final note: UML Diagrams.. absolutely satisfied these were used in the book! Highly recommend picking up a copy of this title and getting started with unit testing.
Amazon Verified review Amazon
Wayne Cannon Jan 23, 2017
Full star icon Full star icon Full star icon Full star icon Full star icon 5
For an inexpensive book, this was surprisingly good.
Amazon Verified review Amazon
Sameer Jan 22, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
excellent book , very engaging , enjoyed reading it
Amazon Verified review Amazon
Aleksandrs Kalinins Oct 31, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This book is a good way to familiarize yourself with JUnit and some testing practices.
Amazon Verified review Amazon
Xanan Feb 04, 2017
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
The book is a good introduction to Test Driven Development and Unit Testing.JUnit is discussed along the way to illustrate how it addresses various aspects of unit testing.The author does a good job at explaining the various concepts and presenting pros and cons of the various alternatives JUnit provides to achieve testing.More advanced topics like Runners and Rules are also covered.Mockito is introduced when test doubles are discussed and brief coverage is given to Hamcrest and AssertJ.API coverage is not exhaustive.Given the book size and its title, I did not expect to find a full chapter devoted to well structuring and properly naming unit tests and another one on continuous integration.Some parts of the book seem to be biased toward teaching how to do effective unit testing rather than actually using JUnit.The book subtitle "Master high-quality software development driven by unit tests" hints at something more than JUnit.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.