unittest 0.12.0-rc.0

The unittest package has been renamed test. It will export test's API through the 0.12.x branch, but it is deprecated and test should be used instead.


  • Tests, groups, and suites can now be configured on a platform-by-platform basis. Tests and groups are configured using the onPlatform named argument; suites are configured using the @OnPlatform annotation. See the README for more information.

  • Add a --reporter flag and an expanded reporter that prints each test on its own line.

  • Properly ignore unrelated link tags in custom HTML.

  • Preserve the stack traces for load errors in isolates and iframes.

  • Stop pub serve from emitting a duplicate-asset error for tests with custom HTML files.

  • When running a test suite via dart path/to/test.dart, throw an exception if the suite fails so that the exit code is set properly.

  • Add support for running on Windows and Internet Explorer.


  • Fix running browser tests in subdirectories.


  • A browser test may use a custom HTML file. See the README for more information.

  • Tests, groups, and suites may be declared as skipped. Tests and groups are skipped using the skip named argument; suites are skipped using the @Skip annotation. See the README for more information.

  • Fix running VM tests against pub serve.

  • More gracefully handle browser errors.

  • Properly load Dartium from the Dart Editor when possible.


  • Add support for configuring timeouts on a test, group, and suite basis. Test and group timeouts are configured with the timeout named argument; suites are configured using the @Timeout annotation. See the README for more information.

  • Support running tests on Safari.

  • Add a --version flag.

  • Add an animation to run in the browser while testing.


  • Browser tests can now load assets by making HTTP requests to the corresponding relative URLs.

  • Add support for running tests on Dartium and the Dartium content shell.

  • Add support for running tests on PhantomJS.


  • Add the ability to run multiple test suites concurrently. By default a number of concurrent test suites will be run equal to half the machine's processors; this can be controlled with the --concurrency flag.

  • Expose load errors as test failures rather than having them kill the entire process.

  • Add support for running tests on Firefox.


  • Add a --pub-serve flag that runs tests against a pub serve instance. This feature is only supported on Dart 1.9.2 and higher.

  • When the test runner is killed prematurely, it will clean up its temporary directories and give the current test a chance to run its tearDown logic.


  • Fix a package-root bug.


  • Add support for shelf 0.6.0.

  • Fix a "failed to load" bug on Windows.


  • Rename the package to test. The unittest package will continue to exist through the 0.12.0 cycle, but it's deprecated and will just export the test package.

  • Remove the deprecated members from test. These members will remain in unittest for now.


  • Add a --name (shorthand -n) flag to the test runner for selecting which test to run.

  • Ensure that print() in tests always prints on its own line.

  • Forward print()s from browser tests to the command-line reporter.

  • Add a missing dependency on string_scanner.


  • Added support for a test runner, which can be run via pub run test:test. By default it runs all files recursively in the test/ directory that end in _test.dart and aren't in a packages/ directory.

  • As part of moving to a runner-based model, most test configuration is moving out of the test file and into the runner. As such, many ancillary APIs are stubbed out and marked as deprecated. They still exist to make adoption easier, but they're now no-ops and will be removed before the stable 0.12.0 release. These APIs include skip_ and solo_ functions, Configuration and all its subclasses, TestCase, TestFunction, testConfiguration, formatStacks, filterStacks, groupSep, logMessage, testCases, BREATH_INTERVAL, currentTestCase, PASS, FAIL, ERROR, filterTests, runTests, ensureInitialized, setSoloTest, enableTest, disableTest, and withTestEnvironment.

  • Removed FailureHandler, DefaultFailureHandler, configureExpectFailureHandler, and getOrCreateExpectFailureHandler which used to be exported from the matcher package. They existed to enable integration between test and matcher that has been streamlined.

  • Moved a number of APIs from matcher into test, including: completes, completion, ErrorFormatter, expect,fail, prints, TestFailure, Throws, and all of the throws methods.

    • expect no longer has a named failureHandler argument.

    • expect added an optional formatter argument.

    • completion argument id renamed to description.

  • Removed several members from SimpleConfiguration that relied on removed functionality: onExpectFailure, stopTestOnExpectFailure, and 'name'.


  • Internal code cleanups and documentation improvements.


  • Bumped the version constraint for matcher.


  • Bump the version constraint for matcher.


  • Narrow the constraint on matcher to ensure that new features are reflected in unittest's version.


  • Prints a warning instead of throwing an error when setting the test configuration after it has already been set. The first configuration is always used.


  • Fix bug in withTestEnvironment where test cases were not reinitialized if called multiple times.


  • Add reason named argument to expectAsync and expectAsyncUntil, which has the same definition as expect's reason argument.

  • Added support for private test environments.


  • Refactored package tests.


  • Release test functions after each test is run.



  • Updated maximum matcher version.


  • Removed unused files from tests and standardized remaining test file names.


  • Widen the version constraint for stack_trace.


  • Deprecated methods have been removed: expectAsync0, expectAsync1, and expectAsync2 - use expectAsync instead expectAsyncUntil0, expectAsyncUntil1, and expectAsyncUntil2 - use expectAsyncUntil instead guardAsync - no longer needed protectAsync0, protectAsync1, and protectAsync2 - no longer needed

  • matcher.dart and mirror_matchers.dart have been removed. They are now in the matcher package.

  • mock.dart has been removed. It is now in the mock package.


  • Fixed deprecation message for mock.


  • Moved to triple-slash for all doc comments.


  • DEPRECATED matcher.dart and mirror_matchers.dart are now in the matcher package. mock.dart is now in the mock package.

  • equals now allows a nested matcher as an expected list element or map value when doing deep matching.

  • expectAsync and expectAsyncUntil now support up to 6 positional arguments and correctly handle functions with optional positional arguments with default values.


  • Each test is run in a separate Zone. This ensures that any exceptions that occur is async operations are reported back to the source test case.

  • DEPRECATED guardAsync, protectAsync0, protectAsync1, and protectAsync2 * Running each test in a Zone addresses the need for these methods.

  • NEW! expectAsync replaces the now deprecated expectAsync0, expectAsync1 and expectAsync2

  • NEW! expectAsyncUntil replaces the now deprecated expectAsyncUntil0, expectAsyncUntil1 and expectAsyncUntil2

  • TestCase: Removed properties: setUp, tearDown, testFunction enabled is now get-only * Removed methods: pass, fail, error

  • interactive_html_config.dart has been removed.
  • runTests, tearDown, setUp, test, group, solo_test, and solo_group now throw a StateError if called while tests are running.

  • rerunTests has been removed.

1. Depend on it

Add this to your package's pubspec.yaml file:

  unittest: ">=0.12.0-rc.0 <0.13.0"

If your package is an application package you should use any as the version constraint.

2. Install it

You can install packages from the command line:

$ pub get

Alternatively, your editor might support pub. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:unittest/unittest.dart';


A library for writing dart unit tests.


Email misc@dartlang.org Dart Team