You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by Galen O'Sullivan <go...@apache.org> on 2018/09/05 22:58:38 UTC

Re: [DISCUSS] Remove CatchException testing dependency

+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.
> >>
> >>
> >
>