• 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
                  ·
                  13 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…