On 4/30/14, 1:19 PM, Jacob Carlborg wrote:
On 2014-04-30 17:43, 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.

Can't we just collect all unit tests with __traits(getUnitTests) and put
them through std.parallelism:

foreach (unitTest ; unitTests.parallel)
     unitTest();

I didn't know of that trait; I adapted code from druntime/src/test_runner.d.

Named unit tests are already possible with the help of UDA's:

@name("foo bar") unittest
{
     assert(true);
}

I've tried several times here, in reviews, to get people to add some
description to the unit tests. But so far no one has agreed.

Yah I think that's possible but I'd like the name to be part of the function name as well e.g. unittest__%s.

I'm using something quite similar to RSpec from the Ruby world:

describe! "toMsec" in {
     it! "returns the time in milliseconds" in {
         assert(true);
     }
}

This uses the old syntax, with UDA's it becomes something like this:

@describe("toMsec")
{
     @it("returns the time in milliseconds") unittest
     {
         assert(true);
     }
}

That looks... interesting.

Thoughts? Would anyone want to work on such stuff?

Are you thinking of built-in support or an external library?

Built in with possible help from druntime and/or std.



Andrei


Reply via email to