You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Kirk Lund (JIRA)" <ji...@apache.org> on 2018/08/27 17:05:00 UTC

[jira] [Created] (GEODE-5639) Replace usage of CatchException with AssertJ and remove CatchException depoendency

Kirk Lund created GEODE-5639:
--------------------------------

             Summary: Replace usage of CatchException with AssertJ and remove CatchException depoendency
                 Key: GEODE-5639
                 URL: https://issues.apache.org/jira/browse/GEODE-5639
             Project: Geode
          Issue Type: Wish
          Components: build, tests
            Reporter: Kirk Lund


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.

The tests using CatchException should be updated 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.Assertions.assertThatThrownBy

Example from JdbcWriterTest:
{noformat}
    assertThatThrownBy(() -> writer.beforeUpdate(entryEvent))
        .isInstanceOf(IllegalArgumentException.class);
{noformat}

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:
{noformat}
    Throwable thrown = server1.invoke(() -> catchThrowable(() -> putDelta(FROM_DELTA)));

    assertThat(thrown).isInstanceOf(DeltaSerializationException.class)
        .hasMessageContaining("deserializing delta bytes").hasCauseInstanceOf(EOFException.class);
{noformat}

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:
{noformat}
    assertThatCode(() -> clientCache.readyForEvents()).doesNotThrowAnyException();
{noformat}




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)