PhpRiot
News Archive
PhpRiot Newsletter
Your Email Address:

More information

How long is too long (for unit test method names)?

Note: This article was originally published at Planet PHP on 13 January 2011.
Planet PHP

As I ws working on some new development in our codebase this morning, I started updating some
unit tests to match. I was looking through the code for one of them and came across a test name that was easily 50 characters long and
it got me wondering - what was the popular opinion on naming conventions and commenting in unit tests. Obviously, there's some things
(like annotations) that have to be in comments, but do you sacrifice clarity of a comment for a method name that you can basically read
like a novel?

I mentioned something on Twitter about it and here's some of the responses I got:

-----------

Rafael Dohms (rdohms)
@enygma @elazar @bdeshong taking into consideration PHPUnit and its use of method names (like testdox) i would focus more on name not doc
2 hours ago

weierophinney (weierophinney)
@enygma I don't document my tests; the test name and test content *are* documentation. /cc @elazar @bdeshong
2 hours ago

weierophinney (weierophinney)
@enygma I do those all the time. For use with #PHPUnit's testdox output.
2 hours ago

Ralph Schindler (ralphschindler)
@bdeshong @elazar @enygma if you are using PHPUnit, run the tests with -testdox, you'll see the benefit of long test names
2 hours ago

Chris Cornutt (enygma)
@mwillbanks ah, good pointaI can see how that'd be handy heh

Mike Willbanks (mwillbanks)
@enygma putting it in a docblock is nice, however, when running it on a CI server it is nice to see what broke by method name and test name
2 hours ago

Mike Willbanks (mwillbanks)
@enygma I think we have one that is almost 100 characters here is 1 example: testEditActionRedirectWhenJournalEntryNotFound
2 hours ago

Brian DeShong (bdeshong)
@enygma @elazar 120 characters?
2 hours ago

Michael Maclean (mgdm)
@enygma around the 100 character mark?

2 hours ago

Chris Cornutt (enygma)
@elazar @bdeshong ah, but where should method names end and docblocks begin?

Brian DeShong (bdeshong)
@enygma If the method name is long, but descriptive, then that's good. Descriptive test method names are better than short ones.
2 hours ago

Matthew Turland (elazar)
@enygma Better to be verbose and accurately descriptive than overly concise and obscure?
2 hours ago

jcarouth (jcarouth)
@enygma Hey, I'll take that over testApp1() and testApp2() any day.
3 hours ago

Chris Cornutt (enygma)
well hello entirelyTooLongUnitTestMethodName, nice to meet you
3 hours ago

-----------

That last one was my not-so-innocent comment that started the whole thing off. I'm still interested, though, in what developers
out there think is a good point to switch from documenting via the test functions name and moving it up to a docblock comment. Seems
like there's arguments for both sides and I'm not sure if there's a aowinnera, but it's always fun to get opinions.

What are your preferences in unit test naming versus commenting?