Thanks Roc, Your idea sounds great, the AssertJ is powerful, but I don't recommend going this path.
1. There are already two test frameworks TestNG and Junit in Pulsar now, we should only use a test framework - TestNG, there is still some work left to clean up JUnit: https://github.com/apache/pulsar/pull/14065 2. Migration is complex, we have multiple release versions, which makes cherry-pick difficult. Zixuan Enrico Olivelli <eolive...@gmail.com> 于2022年3月17日周四 20:58写道: > Roc, > Thanks for sharing your proposal. > > Changing the test framework will introduce lots of changes and it will > make it harder to share patches between branches. > In Pulsar we are currently maintaining 5 release lines (2.7, 2.8, 2.9, > 2.10 and master-2.11). > > Maybe using AssertJ for new tests can be a good compromise, like when > we started to use Awaitility across all modules. > > But I am not sure we want to convert the assertions on every existing test > case: > - it is a huge work > - we can change the meaning of some tests (even with good automated tools) > - (as said above) it will be hard to share patches between branches > > In my humble opinion the benefits of the migration are very little > compared to the risks and the waste of time > > Enrico > > Il giorno gio 17 mar 2022 alle ore 03:12 Roc Marshal <flin...@126.com> > ha scritto: > > > > Thank you for your research about automated toolings, Lari. > > > > > > As you said, if we decide to migrate, the way how we migrate it is > important. > > There is a compromise way worth discussing. AssertJ is used for > assertion in new tests, while module based migration can be used in the > migration process of old test cases, which can greatly reduce the > probability of conflict. > > > > > > > > > > - Roc Marshal. > > > > At 2022-03-17 03:46:28, "Lari Hotari" <lhot...@apache.org> wrote: > > >I support the switch to AssertJ. > > > > > >Some automated tooling might be useful for doing the bulk of the > migration. > > > > > >AssertJ provides some scripts for the migration: > > > > https://joel-costigliola.github.io/assertj/assertj-core-converting-testng-assertions-to-assertj.html > > > > > >There's also more sophisticated tools such as OpenRewrite for > automated refactorings. There are "recipes" for using OpenRewrite to > migrate from Junit asserts to AssertJ. > > > > https://docs.openrewrite.org/reference/recipes/java/testing/assertj/junittoassertj > > >Junit asserts are slightly different than TestNG asserts (parameter > order is different) so it would require modifying the OpenRewrite recipes > to use them for TestNG -> AssertJ refactoring. > > > > > >Before we make the switch it would be useful to experiment with the > tooling to see how quickly we could migrate the code base to use AssertJ. > > > > > >Migrating all at-once would result in a lot merge conflicts in all > in-progress pull requests and it would make cherry-picking changes to > maintenance branches more painful. > > >Do we want to go down that path? > > >An alternative would be to introduce AssertJ as a new library and use > it only for new tests. > > >Perhaps we could start with that? > > > > > >-Lari > > > > > >On 2022/03/16 14:03:03 Roc Marshal wrote: > > >> Dear devs, > > >> > > >> I'd like to start a discussion to migrate the TestNg assertion to > AssertJ assertion. > > >> > > >> Some main motivations are: > > >> - AssertJ is a pure streaming API with more elegant coding and higher > readability. > > >> - Making full use of Java 8 Lambdas for writing easier to read tests > and a better performing way of composing failure messages. > > >> - Better exception verification > > >> - Powerful assertion function from AssertJ. > > >> - Compatible with popular testing frameworks, including TestNG. > > >> > > >> > > >> There are some links with concise documentation: > > >> What is AssertJ > https://assertj.github.io/doc/#overview-what-is-assertj > > >> > > >> Custom assertions extension > https://assertj.github.io/doc/#assertj-core-custom-assertions > > >> Core assertion guide > https://assertj.github.io/doc/#assertj-core-assertions-guide > > >> > > >> Let me know what you think and I'm happy to answer all questions. Any > suggestions are appreciated. > > >> > > >> > > >> Best, > > >> > > >> Roc Marshal. >