dunit 1.0.12

Advanced unit testing toolkit for the D programming language

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:


Advanced unit testing toolkit for the D programming language

Build Status

DUnit is a unit testing toolkit for the D programming language. The toolkit comprises of a solution to mocking objects and a library to enable more expressive and helpful assertions.

Unit testing is necessary to assert units of code perform in isolation and conform to repeatable and known expectations. DUnit gives you the tools to make this task an easier one.

Supported platforms

DUnit was developed and tested with the latest DMD compiler and should support any platform DMD supports as it only contains platform independent code. Other compilers have not been tested but should build fine.


Object mocking

DUnit features a mixin template to inject mockable behaviour into a class or interface. Once injected, a static method allows you to retrieve an object with the same properties as the class or interface it was retrieved from. Mock objects behave and act as their parent (or in the case of interfaces an implemention) but with the added feature that all methods can be replaced by a delegate at runtime*.

  • Final methods cannot be replaced.
  • The mixin only injects code when the -unittest compiler flag is used.

Helpful asserts

When using DUnit the built-in unit test handler has been replaced to give more helpful error messages. When something goes wrong the error tries to be as helpful as possible by showing file, line, and assert value output.

DUnit by Gary Willoughby.
> Running unit tests
- example

| Failed asserting equal
| File: example.d
| Line: 91
| ✓ Expected value: (int) 1
| ✗ Actual value: (ulong) 2

Compiler flags


  1. Mocking behaviour is only injected in unit test mode so you must used the -unittest flag for mocking to work.
  2. Usually when using DUnit all unit testing code is placed within unittest blocks. If this is the case you must compile using the -unittest flag to enable their execution.


  1. When compiling using the -unittest switch be mindful that standard assert functions will exit the program and display an error, even when compiled with the -release switch! To stop this happening, remove the -unittest switch from the compile command and -release will once again ignore asserts.


There is full HTML documentation within the repository inside the docs directory.

Building with dub

To build DUnit as a static library using dub use the following command.

dub build --build=unittest --config=library

View online


Click here to see an example of how Dunit is used.

  • Gary Willoughby
1.0.16 2020-Feb-04
1.0.15 2019-Jun-14
1.0.14 2016-Oct-20
1.0.13 2016-Oct-20
1.0.12 2015-Nov-02
Show all 19 versions
Download Stats:
  • 29 downloads today

  • 233 downloads this week

  • 1015 downloads this month

  • 211085 downloads total

Short URL: