For what it's worth, I recently rewrote all of the tests in flink-training
to use assertj, removing a mixture of junit4 assertions and hamcrest in the
process. I chose assertj because I found it to be more expressive and made
the tests more readable.

+1 from me

David

On Fri, Nov 12, 2021 at 10:03 AM Francesco Guardiani <
france...@ververica.com> wrote:

> Hi all,
>
> I wonder If we have a convention of the testing tools (in particular
> assertions) to use in our tests. If not, are modules free to decide on a
> convention on their own?
>
> In case of table, we have a mixed bag of different assertions of all kinds,
> sometimes mixed even in the same test:
>
>    - Assertions from junit 4
>    - Assertions from junit 5
>    - Hamcrest
>    - Some custom assertions classes (e.g. RowDataHarnessAssertor)
>    - assert instructions
>
> The result is that most tests are very complicated to read and understand,
> and we have a lot of copy pasted "assertion methods" all around our
> codebase.
>
> For table in particular, I propose to introduce assertj [1] and develop a
> couple of custom assertions [2] for the types we use most in our tests,
> e.g. Row, RowData, DataType, LogicalType, etc... For example:
>
> assertFalse(row.isNullAt(1));
> assert row instanceof GenericRowData;
> assertEquals(row.getField(1), TimestampData.ofEpochMillis(expectedMillis));
>
> Could be:
>
> assertThat(row)
>   .getField(1, TimestampData.class)
>   .isEqualToEpochMillis(expectedMillis)
>
> We could have these in table-common so every part of the table stack can
> benefit from it. Of course we can't take all our tests and convert them to
> the new assertions, but as a policy we can enforce to use the new
> assertions convention for every new test or for every test we modify in
> future PRs.
>
> What's your opinion about it? Do you agree to have such kind of policy of
> using the same assertions? If yes, do you like the idea of using assertj to
> implement such policy?
>
> FG
>
> [1] A library for assertions https://assertj.github.io, already used by
> the
> pulsar connector
> [2] https://assertj.github.io/doc/#assertj-core-custom-assertions-creation
> --
>
> Francesco Guardiani | Software Engineer
>
> france...@ververica.com
>
>
> <https://www.ververica.com/>
>
> Follow us @VervericaData
>
> --
>
> Join Flink Forward <https://flink-forward.org/> - The Apache Flink
> Conference
>
> Stream Processing | Event Driven | Real Time
>
> --
>
> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>
> --
>
> Ververica GmbH
>
> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>
> Managing Directors: Karl Anton Wehner, Holger Temme, Yip Park Tung Jason,
> Jinwei (Kevin) Zhang
>

Reply via email to