Skip to Content
Java By Comparison
book

Java By Comparison

by Simon Harrer, Linus Dietz, Jörg Lenhard
March 2018
Intermediate to advanced
208 pages
4h 52m
English
Pragmatic Bookshelf
Content preview from Java By Comparison

Use Reasonable Tolerance Values

 class​ OxygenTankTest {
 
  @Test
 void​ testNewTankIsEmpty() {
  OxygenTank tank = OxygenTank.withCapacity(100);
  Assertions.assertEquals(0, tank.getStatus());
  }
 
  @Test
 void​ testFilling() {
  OxygenTank tank = OxygenTank.withCapacity(100);
 
  tank.fill(5.8);
  tank.fill(5.6);
 
» Assertions.assertEquals(0.114, tank.getStatus());
  }
 }

Here you can see tests that use floating-point numbers instead of integer values. From the source code alone, the tests seem good. The problem is that they’re going to fail, even if the code that’s tested is functionally correct.

Can you think of why? Here’s a tip: On our machine, the second test fails with the message expected: <0.114> but was <0.11399999999999999> ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Java 8 in Action

Java 8 in Action

Mario Fusco, Alan Mycroft, Raoul-Gabriel Urma
Java 8 Lambdas

Java 8 Lambdas

Richard Warburton
Think Java, 2nd Edition

Think Java, 2nd Edition

Allen B. Downey, Chris Mayfield
Modern Java in Action

Modern Java in Action

Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft

Publisher Resources

ISBN: 9781680505887Errata Page