• UnderpantsWeevil@lemmy.world
    link
    fedilink
    English
    arrow-up
    15
    arrow-down
    3
    ·
    3 days ago

    Designing your unit tests before you’ve written your algorithm is - in my experience - a bit ass backwards.

    • vanillama@programming.dev
      link
      fedilink
      arrow-up
      4
      arrow-down
      2
      ·
      3 days ago

      Agreed, you find the right shape for the code as you build and try stuff, adding the tests right after makes most sense, unless maybe you’re just testing an API or something

      • Zannsolo@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        2 days ago

        I mean I’m theory for any planned method you would know the input and expected output before the coffee is written.

        • vanillama@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          2 days ago

          As I said, an interface can easily be tested, but if it’s internal implementation I normally make a design, implement it, and I usually come up with other ideas and I like having the fluidity of making changes as I prototype and such, that way I’m not constrained by a test yet. After I’m done, and documented my choices if necessary, then I add the tests.

        • ThirdConsul@lemmy.zip
          link
          fedilink
          arrow-up
          2
          arrow-down
          1
          ·
          2 days ago

          Except that then you’ll shape your interfaces to drive tests nicely, instead of being, you know, sane and useful (been there, done that).

          • 3abas@lemmy.world
            link
            fedilink
            arrow-up
            1
            arrow-down
            1
            ·
            2 days ago

            Unit tested test for accuracy, if your code isn’t “shaped to drive tests nicely”, it’s bad code.

            They enforce requirements. You do start with code, you start with the “shape”, you architect how your application should be developed and you write unit tests for the functions you already know you want but haven’t written the logic to yet, the unit test validates the logic so you don’t spend 2 hours hunting down a missing negative sign.

              • 3abas@lemmy.world
                link
                fedilink
                arrow-up
                1
                ·
                14 hours ago

                I did, and I responded to your comment in its entirety. If there’s a point you made that I missed, try rephrasing it instead of being snarky…

                Unit tests tests known facts and validate requirements, good unit tests are defined after you define your requirements and as you design your infrastructure, not after you write your code. They ensure your code does what you require it to do.

                I don’t know what part of your comment I missed reading…