I think the suggested format could be useful when applicable, I would
consider expanding "function under test" to "area under test" to
accommodate tests that have a wider scope than a single method.

For cases where that format may not be applicable, perhaps that means it's
a test where additional javadocs/comments explaining what the test
does/expects is a good idea (that would be enough info in my view).

Since I don't think the proposed format applies universally, I would prefer
starting it off as a suggestion/best practice instead of as a hard
requirement and seeing how that goes.

I'm indifferent to the use of underscores.



On Mon, Dec 23, 2019 at 3:19 PM Gian Merlino <g...@apache.org> wrote:

> Suneet,
>
> Sometimes it's hard to understand how things would improve without an
> example. Could you point to a test file that you think would be improved by
> this change? Also, there are some test files that I would struggle to fit
> into this framework. It seems best suited to simple single-method unit
> tests. What would you suggest doing for these examples?
>
> - CalciteQueryTest: Tests the SQL layer. There's one function per SQL query
> being tested, but there is no specific function under test, and the
> expected result is too complex to include in a method name.
> - GroupByQueryRunnerTest: Tests the groupBy query engine. Similar structure
> and similar issue to CalciteQueryTest.
> - SelectorFilterTest: Tests the selector filter. But no specific function
> is being tested. The "assertFilterMatches" helper is used to create test
> cases that say 'this filter should match these rows'.
>
> Other notes:
>
> - IMO, the underscores are ugly, but acceptable if they buy us something.
> - I'm not sure that the "expectedResult" part of the name is going to work
> well. It's often something complex (like an array, or object, or long
> string) that would be awkward to include in a method name. And with JUnit
> assertions, the expected result is right there in the method call anyway.
>
> Looking forward to hearing your thoughts. Thanks for thinking about how to
> make our testing better.
>
> Gian
>
> On Mon, Dec 23, 2019 at 11:06 AM Suneet Saldanha <suneet.salda...@imply.io
> >
> wrote:
>
> > Hello,
> >
> > I've started writing tests in the druid repo and would like to propose a
> > new test naming structure for the project. Inspired by this thread -
> > https://www.mail-archive.com/dev@druid.apache.org/msg02426.html but
> > focused
> > only on the naming of tests. I'd like to propose we start using the
> format
> > below
> >
> > test_<functionUnderTest>_<conditions>_<expectedResult>
> >
> > This makes it a lot easier for devs to name tests in a way that's easily
> > understood by someone else without having to read the test to know what's
> > going on. Here's some of my rationale:
> >
> >    - Explicit - the name tells you everything you need to know about the
> >    test
> >    - Forces you to write one test per condition/ expected result
> >    - Underscores make it easy to delineate the different components of
> the
> >    test
> >    - Minimal effort to think of a short name that correctly captures
> >    everything about the test while still being different from all the
> other
> >    tests
> >
> > Happy to hear feedback / concerns about this approach.
> >
> > Suneet
> >
>

Reply via email to