[Cuis-dev] Test error message wrongly formatted

Juan Vuletich juan at cuis.st
Sun Jul 30 15:29:39 PDT 2023


Hi Folks,

I am delighted and amazed to see this kind of conversation taking place 
in our community. Martin, this is invaluable! Thank you all.

On 7/30/2023 7:15 PM, Hernán Wilkinson via Cuis-dev wrote:
> Hi Martin,
>  thank you for your explanation! I thought it was in SUnit 
> because JUnit, NUnit and others have the assert:equals: (or 
> assertEquals(...), etc) and I thought they took it from SUnit. But 
> you are right, I remember using SUnit back in 2002 and no 
> assert:equals: existed, I saw it the first time in JUnit.
>  JUnit, NUnit, etc have the expected as first parameter. Maybe the one 
> we have now was copied from JUnit that follows that convention then...
>  Regarding what to do with the parameters order, now with your 
> explanation I do not have a preference... if there are non historical 
> reasons then maybe having actual first is better, is what most people 
> think it should be (even me!). It won't be the same as JUnit but I 
> think we do not really care about that, do we? :-)

I would care a bit about JUnit, but indeed I care more about the wider 
Smalltalk community. It seems we inherited the confusion from Squeak. I 
take Pharo's side on this one, and I suggest following Martin's advice, 
even if we'll need to review quite a few tests.

Thanks,

>
> Cheers!
> Hernan.
>
> On Sun, Jul 30, 2023 at 6:59 PM Martin McClure <martin at hand2mouse.com 
> <mailto:martin at hand2mouse.com>> wrote:
>
>     Hi Hernán,
>
>     I'm afraid you can't blame Kent Beck for this ambiguity.
>
>     #assert:equals: was not in Kent's original SUnit design -- at
>     least it's
>     not in his paper from 1999, and it's not in Camp Smalltalk SUnit 3.1
>     from 2003.
>
>     At GemStone, we have an internal test framework that existed before
>     SUnit did, and its primary way of doing assertions is
>
>          self run: aBlock forResult: anObject.
>
>     Fifteen years ago or so, Niall Ross was the primary SUnit maintainer,
>     and I suggested to him that SUnit could benefit from something like
>     #run:forResult:. He didn't think that particular selector fit SUnit's
>     way of doing things, but for SUnit 4.0 (2009 or so) he added
>     #assert:equals:.
>
>     Niall's code did not specify which argument is the expected and which
>     the actual. The failure description just says "a is not equal to
>     b." So
>     it was left ambiguous.
>
>     However, I was never in doubt that the "proper" usage was "assert:
>     actual equals: expected." And there's quite a lot of Smalltalk
>     code that
>     uses it that way. A random sampling of GemStone's many tests shows
>     exactly none that put the expected value first. And Pharo explicitly
>     shows which is which, their message pattern in TestAsserter is
>
>         assert: actual equals: expected
>
>     and their tests follow that usage.
>
>     So, since "we all expect the actual to be first" and there's a
>     quite lot
>     of code in Smalltalk-land that agrees with that, I'd suggest that
>     Cuis
>     follow suit.
>
>     Regards,
>     -Martin
>
>
>     On 7/23/23 19:29, Hernán Wilkinson via Cuis-dev wrote:
>     > Hi Hilaire
>     >  I think all of us that used #assert:equals: had the same
>     feeling as
>     > you someday.
>     >  We all expect the actual to be first, but for some reason I do not
>     > know Kent Beck put the expected first when he wrote SUnit and
>     all the
>     > descendant testing framework followed that convention (JUnit,
>     NUnit,
>     > phpunit, etc etc).
>     >  We should not change it for historical and compatibility reasons.
>     >  Adding the message you suggest will not harm, but it is
>     redundant...
>     >  My advice, give it a couple of days, you will get used to it to
>     put
>     > the expected first, it is a matter of time.
>     >
>
>
>
> -- 
> *Hernán Wilkinson
> Agile Software Development, Teaching & Coaching*
> *Phone: +54-011*-4893-2057
> *Twitter: @HernanWilkinson*
> *site: http://www.10Pines.com <http://www.10pines.com/>*
> Address: Alem 896, Floor 6, Buenos Aires, Argentina


-- 
Juan Vuletich
cuis.st
github.com/jvuletich
researchgate.net/profile/Juan-Vuletich
independent.academia.edu/JuanVuletich
patents.justia.com/inventor/juan-manuel-vuletich
linkedin.com/in/juan-vuletich-75611b3
twitter.com/JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230730/c3d88309/attachment-0001.htm>


More information about the Cuis-dev mailing list