diff --git a/testing-modules/testing/pom.xml b/testing-modules/testing/pom.xml
index c76045380b..91792a4681 100644
--- a/testing-modules/testing/pom.xml
+++ b/testing-modules/testing/pom.xml
@@ -173,7 +173,7 @@
0.7.7.201606060606
21.0
3.1.0
- 3.6.1
+ 3.9.0
2.1.0
0.32
1.1.0
diff --git a/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java7StyleAssertions.java b/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java7StyleAssertions.java
new file mode 100644
index 0000000000..07a5be1118
--- /dev/null
+++ b/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java7StyleAssertions.java
@@ -0,0 +1,24 @@
+package com.baeldung.testing.assertj.exceptions;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
+
+import org.junit.Test;
+
+public class Java7StyleAssertions {
+
+ @Test
+ public void whenDividingByZero_thenArithmeticException() {
+ try {
+ int numerator = 10;
+ int denominator = 0;
+ int quotient = numerator / denominator;
+ fail("ArithmeticException expected because dividing by zero yields an ArithmeticException.");
+ failBecauseExceptionWasNotThrown(ArithmeticException.class);
+ } catch (Exception e) {
+ assertThat(e).hasMessage("/ by zero");
+ assertThat(e).isInstanceOf(ArithmeticException.class);
+ }
+ }
+}
diff --git a/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java8StyleAssertions.java b/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java8StyleAssertions.java
new file mode 100644
index 0000000000..53f192bb2f
--- /dev/null
+++ b/testing-modules/testing/src/test/java/com/baeldung/testing/assertj/exceptions/Java8StyleAssertions.java
@@ -0,0 +1,42 @@
+package com.baeldung.testing.assertj.exceptions;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.assertj.core.api.Assertions.catchThrowable;
+
+import org.junit.Test;
+
+public class Java8StyleAssertions {
+
+ @Test
+ public void whenDividingByZero_thenArithmeticException() {
+ assertThatThrownBy(() -> {
+ int numerator = 10;
+ int denominator = 0;
+ int quotient = numerator / denominator;
+ }).isInstanceOf(ArithmeticException.class)
+ .hasMessageContaining("/ by zero");
+
+ assertThatExceptionOfType(ArithmeticException.class).isThrownBy(() -> {
+ int numerator = 10;
+ int denominator = 0;
+ int quotient = numerator / denominator;
+ })
+ .withMessageContaining("/ by zero");
+
+ // BDD style:
+
+ // when
+ Throwable thrown = catchThrowable(() -> {
+ int numerator = 10;
+ int denominator = 0;
+ int quotient = numerator / denominator;
+ });
+
+ // then
+ assertThat(thrown).isInstanceOf(ArithmeticException.class)
+ .hasMessageContaining("/ by zero");
+
+ }
+}