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