Slide 1

Slide 1 text

Voxxed Days Bristol Showdown of the Asserts Philipp Krenn̴̴@xeraa

Slide 2

Slide 2 text

Assert Dictionary state a fact or belief confidently and forcefully

Slide 3

Slide 3 text

This is not an assertive talk

Slide 4

Slide 4 text

JUnit + tempus-fugit

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

TestNG JUnit compatible testing framework

Slide 9

Slide 9 text

Hamcrest AssertJ (fest) Truth Replace JUnit / TestNG asserts

Slide 10

Slide 10 text

Spock Testing framework written in Groovy JUnit runner Mocking / Stubbing

Slide 11

Slide 11 text

Example Code assertNotEquals(unexpected, actual); assertThat(actual, is(not(equalTo(unexpected)))); Different order Longer Additional dependency

Slide 12

Slide 12 text

JUnit public class AdderTest { @Test public void testAdd(){ Adder adder = new Adder(); assertEquals(3, adder.add(1, 2)); } }

Slide 13

Slide 13 text

// JUnit assertEquals(3, adder.add(1, 2)); // TestNG assertEquals(adder.add(1, 2), 3); // Hamcrest assertThat(adder.add(1, 2), equalTo(3)); // AssertJ assertThat(adder.add(1, 2)).isEqualTo(3); // Truth assertThat(adder.add(1, 2)).isEqualTo(3); // Spock expect: adder.add(1, 2) == 3

Slide 14

Slide 14 text

JUnit final Double MY_PI = 3.14; assertEquals( "My own pi is close to the real pi", Math.PI, MY_PI, 0.1)

Slide 15

Slide 15 text

// JUnit assertEquals(Math.PI, MY_PI, 0.1) // Hamcrest assertThat(MY_PI, closeTo(Math.PI, 0.1)); // AssertJ assertThat(MY_PI).isCloseTo(Math.PI, Percentage.withPercentage(3)); // Truth assertThat(MY_PI).isWithin(0.1).of(Math.PI); // Spock with Hamcrest matcher expect: MY_PI closeTo(Math.PI, 0.1)

Slide 16

Slide 16 text

It's a mess Order of arguments Traditional vs fluent interfaces Different styles

Slide 17

Slide 17 text

Winner? Stick to one tool / combination

Slide 18

Slide 18 text

“Want to get much better at writing unit tests? For the next week, try writing every single assertion using equal()” https://medium.com/javascript-scene/what-every-unit-test- needs-f6cd34d9836d

Slide 19

Slide 19 text

PS: Junit5 https://junit-team.github.io/junit5/