I don't have any strong opinions on the asserting framework that we use,
but big +1 for the unification.

Best,
D.

On Tue, Nov 16, 2021 at 9:37 AM Till Rohrmann <trohrm...@apache.org> wrote:

> Using JUnit5 with assertJ is fine with me if the community agrees. Having
> guides for best practices would definitely help with the transition.
>
> Cheers,
> Till
>
> On Mon, Nov 15, 2021 at 5:34 PM Francesco Guardiani <
> france...@ververica.com>
> wrote:
>
> > > It is a bit unfortunate that we have tests that follow different
> > patterns.
> > This, however, is mainly due to organic growth. I think the community
> > started with Junit4, then we chose to use Hamcrest because of its better
> > expressiveness.
> >
> > That is fine, I'm sorry if my mail felt like a rant :)
> >
> > > Personally, I don't have a strong preference for which testing tools to
> > use. The important bit is that we agree as a community, then document the
> > choice and finally stick to it. So before starting to use assertj, we
> > should probably align with the folks working on the Junit5 effort first.
> >
> > As Arvid pointed out, using assertj might help the people working on the
> > junit5 effort as well, since assertj works seamlessly with junit4, junit5
> > and even other java testing frameworks.
> >
> > > But I'm not sure if it's wise to change everything at once also
> > from the perspective of less active contributors. We may alleviate that
> > pain by providing good guides though. So maybe, we should also include a
> > temporal dimension into the discussion.
> >
> > This is why I'm proposing a convention and not a rewrite of all the tests
> > at once, that's unfeasible. As you sad, we can provide guides, like in
> our
> > contribution guides, explaining our assertion convention, that is use
> > assertj or whatever other library we want to use and how. So then we can
> > ask contributors to use such assertion convention when they PR new tests
> or
> > when they modify existing ones. Something like that:
> >
> https://github.com/apache/flink-web/commit/87c572ccd4e0ae48eeff3eb15ad9847d302e659d
> >
> > On Fri, Nov 12, 2021 at 5:07 PM Arvid Heise <ar...@apache.org> wrote:
> >
> >> JUnit5 migration is currently mostly prepared. The rules are being
> >> migrated
> >> [1] and Hang and Qingsheng have migrated most tests in their branch
> afaik
> >> (Kudos to them!).
> >>
> >> Using assertj would make migration easier as it's independent of the
> JUnit
> >> version. But the same can be said about hamcrest, albeit less
> expressive.
> >>
> >> I'm personally in favor of assertj (disclaimer I contributed to the
> >> project
> >> a bit). But I'm not sure if it's wise to change everything at once also
> >> from the perspective of less active contributors. We may alleviate that
> >> pain by providing good guides though. So maybe, we should also include a
> >> temporal dimension into the discussion.
> >>
> >> [1] https://github.com/apache/flink/pull/17556
> >>
> >> On Fri, Nov 12, 2021 at 3:58 PM Till Rohrmann <trohrm...@apache.org>
> >> wrote:
> >>
> >> > Thanks for starting this discussion Francesco. I think there is a lot
> of
> >> > value in consistency because it makes it a lot easier to navigate and
> >> > contribute to the code base. The testing tools are definitely one
> >> important
> >> > aspect of consistency.
> >> >
> >> > It is a bit unfortunate that we have tests that follow different
> >> patterns.
> >> > This, however, is mainly due to organic growth. I think the community
> >> > started with Junit4, then we chose to use Hamcrest because of its
> better
> >> > expressiveness. Most recently, there was an effort started that aimed
> at
> >> > switching over to Junit5 [1, 2]. @Arvid Heise <ar...@apache.org>
> knows
> >> > more about the current status.
> >> >
> >> > Personally, I don't have a strong preference for which testing tools
> to
> >> > use. The important bit is that we agree as a community, then document
> >> the
> >> > choice and finally stick to it. So before starting to use assertj, we
> >> > should probably align with the folks working on the Junit5 effort
> first.
> >> >
> >> > [1] https://lists.apache.org/thread/jsjvc2cqb91pyh47d4p6olk3c1vxqm3w
> >> > [2] https://lists.apache.org/thread/d9y5tzcl8wpk6ozmf8575qfzww450jpk
> >> >
> >> > Cheers,
> >> > Till
> >> >
> >> > On Fri, Nov 12, 2021 at 3:41 PM David Anderson <dander...@apache.org>
> >> > wrote:
> >> >
> >> >> 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