Parallel execution of unittests
Atila Neves via Digitalmars-d
digitalmars-d at puremagic.com
Wed Apr 30 10:06:49 PDT 2014
On Wednesday, 30 April 2014 at 16:24:16 UTC, QAston wrote:
> On Wednesday, 30 April 2014 at 15:43:35 UTC, Andrei
> Alexandrescu wrote:
>> Hello,
>>
>>
>> A coworker mentioned the idea that unittests could be run in
>> parallel (using e.g. a thread pool). I've rigged things to run
>> in parallel unittests across modules, and that works well.
>> However, this is too coarse-grained - it would be great if
>> each unittest could be pooled across the thread pool. That's
>> more difficult to implement.
>>
>> This brings up the issue of naming unittests. It's becoming
>> increasingly obvious that anonymous unittests don't quite
>> scale - coworkers are increasingly talking about "the unittest
>> at line 2035 is failing" and such. With unittests executing in
>> multiple threads and issuing e.g. logging output, this is only
>> likely to become more exacerbated. We've resisted named
>> unittests but I think there's enough evidence to make the
>> change.
>>
>> Last but not least, virtually nobody I know runs unittests and
>> then main. This is quickly becoming an idiom:
>>
>> version(unittest) void main() {}
>> else void main()
>> {
>> ...
>> }
>>
>> I think it's time to change that. We could do it the
>> non-backward-compatible way by redefining -unittest to
>> instruct the compiler to not run main. Or we could define
>> another flag such as -unittest-only and then deprecate the
>> existing one.
>>
>> Thoughts? Would anyone want to work on such stuff?
>>
>>
>> Andrei
>
> An existing library implementation:
> https://github.com/atilaneves/unit-threaded
Beat me to it! :P
The concurrency and naming aspects are exactly what drove me to
write unit-threaded to begin with. I probably wouldn't have
bothered if D already had the functionality I wanted.
Atila
More information about the Digitalmars-d
mailing list