Chia-Ping Tsai created KAFKA-16929:
--------------------------------------

             Summary: Conside defining kafka-specified assertion to unify 
testing style
                 Key: KAFKA-16929
                 URL: https://issues.apache.org/jira/browse/KAFKA-16929
             Project: Kafka
          Issue Type: New Feature
            Reporter: Chia-Ping Tsai
            Assignee: Chia-Ping Tsai


There are many contributors who trying to fix chaos of kafka testing. That 
includes following huge works:
 # replace powermock/easymock by mockito (KAFKA-7438)
 # replace junit 4 assertion by junit 5 (KAFKA-7339)

We take 6 years to complete the migration for task 1. The second task is in 
progress and I hope it can be addressed in 4.0.0

When reviewing I noticed there are many different tastes in code base. That is 
why the task 1 is such difficult to rewrite. Now, the rewriting of "assertion" 
is facing the same issue, and I feel the usage of "assertion" is even more 
awkward than "mockito" due to following reason.
 # there are two "different" assertion style in code base - hamcrest and junit 
- that is confused to developers 
([https://github.com/apache/kafka/pull/15730#discussion_r1567676845)]
 # third-party assertion does not offer good error message, so we need to use 
non-common style to get useful output 
([https://github.com/apache/kafka/pull/16253#discussion_r1633406693)]

IMHO, we should consider having our kafka-specified assertion style. Than can 
bring following benefit.
 # unify the assertion style of whole project
 # apply customized assertion. for example:
 ## assertEqual(List<Y>, List<K>, F<K, Y>))
 ## assertTrue(Supplier<B>, Duration) - equal to `TestUtils.waitForCondition`
 # auto-generate useful error message. For example: assertEqual(0, list) -> 
print the list

In short, I'd like to add a new module to define common assertions, and then 
apply it to code base slowly.

All feedback/responses/objections are welcomed :)

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to