+1 On Mon, Aug 27, 2018 at 10:06 AM, Kirk Lund <kl...@apache.org> wrote:
> Jira ticket as been filed for this: > > GEODE-5639: Replace usage of CatchException with AssertJ and remove > CatchException dependency > > On Thu, Aug 23, 2018 at 4:03 PM, Kirk Lund <kl...@apache.org> wrote: > > > I goofed on #1. We should be using* org.assertj.core.api.**Assertions* > > directly, not *AssertionsForClassTypes*. > > > > 1) Basic assertion about an expected exception > > > > Use: org.assertj.core.api.Assertions.assertThatThrownBy > > > > Example from JdbcWriterTest: > > > > assertThatThrownBy(() -> writer.beforeUpdate(entryEvent)) > > .isInstanceOf(IllegalArgumentException.class); > > > > I'll fix JdbcWriterTest's imports. I copied the import to the email > > without looking closely at it. > > > > On Thu, Aug 23, 2018 at 4:01 PM, Kirk Lund <kl...@apache.org> wrote: > > > >> We have a small number of tests using com.googlecode.catchexception. > CatchException. > >> This project isn't very active and AssertJ provides better support for > >> testing expected exceptions and throwables. Most Geode developers are > >> already using AssertJ for expected exceptions. > >> > >> I propose we update the few tests using CatchException to instead use > >> AssertJ and then remove our testing dependency on CatchException. > >> > >> The recommended ways of handling expected exception testing would then > >> involve using following AssertJ APIs: > >> > >> 1) Basic assertion about an expected exception > >> > >> Use: org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy > >> > >> Example from JdbcWriterTest: > >> > >> assertThatThrownBy(() -> writer.beforeUpdate(entryEvent)) > >> .isInstanceOf(IllegalArgumentException.class); > >> > >> 2) Complex assertion about an expected exception (potentially with many > >> nested causes with messages that we want to validate as well) > >> > >> Use: org.assertj.core.api.Assertions.catchThrowable > >> > >> Example from DeltaPropagationFailureRegressionTest: > >> > >> Throwable thrown = server1.invoke(() -> catchThrowable(() -> > >> putDelta(FROM_DELTA))); > >> > >> assertThat(thrown).isInstanceOf(DeltaSerializationException.class) > >> .hasMessageContaining("deserializing delta > >> bytes").hasCauseInstanceOf(EOFException.class); > >> > >> 3) Simple assertion that an invocation should not thrown (probably used > >> in a regression test) > >> > >> Use: org.assertj.core.api.Assertions.assertThatCode > >> > >> Example from RegisterInterestDistributedTest: > >> > >> assertThatCode(() -> clientCache.readyForEvents()). > >> doesNotThrowAnyException(); > >> > >> Let me know if you can think of another use case that isn't handled by > >> the above AssertJ APIs. > >> > >> > > >