Why think unit tests should be in their own source code hierarchy instead of side-by-side
Atila Neves
atila.neves at gmail.com
Thu Mar 22 13:58:50 UTC 2018
On Thursday, 22 March 2018 at 12:26:14 UTC, Anton Fediushin wrote:
> On Thursday, 22 March 2018 at 10:59:56 UTC, Atila Neves wrote:
>> Blog post:
>>
>> https://atilanevesoncode.wordpress.com/
>>
>> Atila
>
> I *love* built-in unittests. Putting them right after each
> function makes things so much easier.
If it works for you, great.
> Tests in their own file is something from 90-s. It's 2018 and I
> want to be able to write tests anywhere I want.
You _can_ write them wherever you want. I'm not arguing for
taking any flexibility away, I'm arguing that for most projects
it's a bad idea, and I stated the reasons why I think that's the
case. Feel free to disagree.
> "They increase build times" - fix compiler, not my code.
If by "fix the compiler" you mean "make it so that the compiler
knows exactly what files need to be recompiled if I only edited
the body of a unittest block" (which is what would be needed),
then I don't think that'll happen any time soon.
But sure, if the compiler worked that way I'd happily advocate
for writing unittests in the same file. But for now, I'd rather
spend a lot less time staring at the screen for 2s waiting for my
code to be built. That's my trade-off, and reasonable people may
(and apparently quite obviously do) disagree.
> "version(unittest) will cause you problems if you write
> libraries" - fix dub, not my code.
This is _not_ a dub issue. version(unittest) _will_ bite you as
soon as you compile foo.d with -unittest because its imports will
be parsed differently. This is one to stick in the "fix the
compiler" column. See the link to the since-reverted Phobos PR in
the blog.
> Built-in unittests are part of D's specification. As long as it
> allowes to do so, I'll carry on writing unittests in my code
> and nobody can take it from me.
Who's trying to take it from you?
Atila
More information about the Digitalmars-d-announce
mailing list