On Fri, 25 Feb 2022, 18:46 'Markus Zimmermann' via golang-nuts, <
golang-nuts@googlegroups.com> wrote:

> Hi Gophers!
>
> We were unhappy with the common unit test styles and we think we found a
> style that has clear advantages. An in-depth comparison can be found here
> https://symflower.com/en/company/blog/2022/better-table-driven-testing.
>
> We also added support for maintaining such tests in our VS Code extension
> https://marketplace.visualstudio.com/items?itemName=symflower.symflower.
> You can either use the command or the context menu item to maintain tests.
> Here is a short introduction video
> https://www.youtube.com/watch?v=mgWLY9DDyDE&ab_channel=Symflower
>
> There are some changes necessary to have better stack traces for
> github.com/stretchr/testify because "t.Run" calls the test function from
> another location. We are in the process of upstreaming them. Until then you
> can find them in our fork at https://github.com/symflower/testify.
>
> Would appreciate your feedback on the style and extension. Would be also
> interesting to hear other approaches and conventions that could help others
> to write better tests.
>
> Cheers,
> Markus
>

One disadvantage of your approach: the table can't be reused for different
tests. Not uncommonly I've found that it's useful to be able to plug the
same table into more than one testing function - after all, the test data
is an abstract description of some property and there can be more than one
way of testing that property.

I usually do something half way between the "standard" approach and your
suggestion. I have a struct with a "testName" field ("name" is too easily
confused with input data IMHO), and I'll use T.Run to run it as a subtest.

I've found that the lack of stack trace is much less of a problem if you
use a test name that isn't mangled by the testing package - in other words:
don't use spaces! That way a simple text search in your editor will usually
take you straight to the relevant table entry.

  cheers,
    rog.

>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/4c52a6b6-6762-442c-b9b8-82b8f50a732dn%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/4c52a6b6-6762-442c-b9b8-82b8f50a732dn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAJhgach5KZm%2Bf3t0mktKTiY2mik6MRSPb2QAfPcYOePOnOU2yg%40mail.gmail.com.

Reply via email to