dub test
Atila Neves via Digitalmars-d
digitalmars-d at puremagic.com
Tue Aug 30 07:40:13 PDT 2016
On Wednesday, 24 August 2016 at 12:00:32 UTC, Andrei Alexandrescu
wrote:
> On 08/24/2016 04:14 AM, Edwin van Leeuwen wrote:
>> I might be dense, but the only other thing than integration
>> tests that I
>> can think of is if you use random data for testing, but that
>> would be
>> more correctly solved by using more random data during the
>> unittests.
>> Nothing is worse than tests that only sometimes fail.
>
> Randomized unit testing is a respected approach to testing:
> https://hackage.haskell.org/package/QuickCheck,
> https://github.com/rickynils/scalacheck,
> https://blogs.msdn.microsoft.com/dsyme/2008/08/08/fscheck-0-2/,
> etc. Some of the Phobos tests I wrote use it (and virtually all
> of my current code e.g. on median computation), and when they
> fail I just print the seed of the RNG and then hardcode it to
> reproduce the test. -- Andrei
unit-threaded has had QuickCheck-like property-based testing
features for a while now. As mentioned previously in the forum, I
wrote this test in cerealed:
@Types!(bool, byte, ubyte, short, ushort, int, uint, long, ulong,
float, double,
char, wchar, dchar,
ubyte[], ushort[], int[], long[], float[], double[])
void testEncodeDecodeProperty(T)() {
check!((T val) {
auto enc = Cerealiser();
enc ~= val;
auto dec = Decerealiser(enc.bytes);
return dec.value!T == val;
});
}
Checks that for every type in the list that given a random value
of that type, serialising then deserialising should yield the
same value back.
Atila
More information about the Digitalmars-d
mailing list