bench 0.4.4

  • Installing
  • Versions
  • 24

no longer maintained

Bench Changes


  • No longer maintained.


  • Added the @proxy annotation to the Mock class.


  • Maintenance.


  • Added an optional log parameter to the reflectTests function and removed the logging package dependency. A basic example of using the log parameter is to pass the print function from dart:core:
void main() => reflectTests(log: print);


  • Changed the description parameter of the TestGroup annotation constructor to a required parameter. The TestGroup annotation itself is optional; any library that contains one or more annotated Test functions is considered a group. So in practice we found that using TestGroup implied the desire to set a custom description in which case it was overly verbose to use the named argument each time.


  • Added a Skip annotation for declaring that the annotated test function shall be skipped by test drivers.
  • Removed the optional skip string from the Test annotation; this has been replaced by the Skip annotation.


  • Added an isAssertionError matcher.
  • Updated unittest dependency to '>=0.11.0 <0.12.0'.


  • Added an isStackOverflowError matcher.
  • Added Usage section to the README.


  • Added an isTimeoutException matcher.
  • Updated API documentation generation to use the new docgen tool.


  • Renamed Mock.clear -> Mock.clearCalls to remove conflict with a method named clear on the class being mocked.


  • Removed some type annotations on locals that were causing type errors to be thrown as of Dart SDK 1.2.0.dev_04_00.


  • Update to unittest version 0.10.0.


  • Added functions expectOneEvent, expectTwoEvents, expectNEvents, expectNoEvents, and expectDone which set expectations for stream event counts but not data.
  • Changed Mock.clear to only clear the calls and not the setup; the setup may be cleared separately if desired.
  • Moved mock mirror system into its own library bench.mock.mirrors.


  • Added an optional skip reason string to the @Test annotation. If given, the test driver will skip the annotated test function and use the reason string to log a message.


  • Added a very simple yet useful Mock class.
  • Removed the main.dart library that was previously used to run the content_shell executable for headless dartium testing. This had been broken since the Dart SDK removal of content_shell.
  • Added an optional testDriver parameter to the reflectTests function; the default TestDriver uses the unittest package as before but this change allows for other future implementations.


  • Added an optional timeout parameter to the reflectTests() function with default value of 30 seconds.


  • Updated to SDK 0.8.10_r29803.


  • Updated to SDK 0.8.7_r29341.


  • Reverted the support for TestRun in Test functions that was added in the previous version. This was decidedly a bad idea, as the goal of the TestRun context is to allow a set of test functions to be run across multiple implementations. As such, only the Setup and Teardown functions should have access to the implementation context.


  • Add support for Test functions to declare 1 parameter of type TestRun to receive the run context in addition to the Setup and Teardown functions.


  • Updated to SDK 0.7.6_r28108.
  • Added an optional runs parameter to the @TestGroup annotation, which defaults to ['']. This provides a mechanism to declare multiple runs of a test group as a list of identifiers. Any Setup or Teardown function may now declare 1 parameter of type TestRun. The TestRun object provides a context specific to each run of the test group, including its identifer and run count.
  • Changed the description parameter of the TestGroup constructor from an optional to a named optional; this is a breaking change that was necessary to accomodate the new runs named optional parameter.


  • Updated to SDK 0.7.5_r27776.


  • Updated to SDK 0.7.1_r27025.
  • Renamed the @ExpectThrows() annotation to @ExpectError() to clarify that it may be used to expect both thrown errors and errors that are completed asynchronously through the test's future.


  • Updated documentation.


  • Renamed the @Group() annotation to @TestGroup() to disambiguate.
  • Added support for @ExpectThrows() on asynchronous test functions.
  • Removed the snapshot and replaced it with the lib/main.dart script; the trouble with the snapshot was that every time a new Dart SDK release was being pushed the snapshot would be corrupt, so packages relying on it to perform continuous integration tests (on, for example) would fail when the new SDK release was pushed. I don't see a good solution in the short-term so it is best to use a dart script. The tool/make_snapshot.dart script remains for those interested in generating a snapshot on their own.


  • Updated to SDK 0.6.21_r26639.


  • Merged all library code into a single bench.dart library for users to import. The main() function was renamed to reflectTests() to better reflect what it does, and to free up main() for future work.
  • Renamed the snapshot from runner to bench.


  • Add a very primitive test runner for running headless browser tests via content_shell --dump-render-tree. The snapshot is in the lib/ directory for now so that it is visible to applications that list bench as a dependency. It can be used from such an application's root directory in the following manner:

    dart packages/bench/runner test/my_browser_harness.html


  • Fixed an issue regarding Setup / Teardown / Test mirrored invocations that return Future; the returned future is now passed correctly to the unittest library functions.


  • Added support for @Group() in the test runner.


  • Added support for @Setup and @Teardown invocation in the test runner.
  • Use each test library's qualifiedName as the default group name when none is specified with @Group(description); currently @Group() annotations are ignored because support for reflection of metadata on library declarations is not yet implemented.


  • Added @ExpectThrows() annotation which takes an optional Matcher from the unittest package. The default matcher is anything.


  • Added an example/browser.html to demonstrate usage with html configuration.
  • Workaround the lack of library declaration metadata reflection (@Group) by setting a single top-level group named '*'; the html configuration renderer will only render tests in groups.


  • Repurposed this package to provide metadata and a reflective test runner for Dart's unittest package. For benchmarks, please use the benchmark_harness package. We may enhance this package to provide support for the benchmark_harness in the future, if there is demand.


  • Updated to SDK 0.5.1_r22072.


  • Updated to SDK 0.5.0_r21823.


  • Updated to SDK 0.4.7_r21548.


  • Refactored a large portion of the async code to simplify things thanks to the lib_v2 changes; Completers are no longer used unless necessary.


  • Updated to SDK 0.4.2_r20259.


  • Updated to SDK 0.3.7_r18717.


  • Updates for the lib v2 SDK (0.3.1_r17328).


  • Better dependency version constraints.
  • Removed function literal from example that was causing error in latest SDK.


  • Updated the pubspec dependencies (logging and unittest are now on pub)


  • Ramped up the documentation and added link to blog article.
  • Libraries and their benchmarks are now sorted alphabetically to provide consistent run results.

1. Depend on it

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

  bench: "^0.4.4"

2. Install it

You can install packages from the command line:

with pub:

$ pub get

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

3. Import it

Now in your Dart code, you can use:

import 'package:bench/bench.dart';
Version Uploaded Documentation Archive
0.4.4 Nov 24, 2015 Go to the documentation of bench 0.4.4 Download bench 0.4.4 archive
0.4.3 Oct 11, 2014 Go to the documentation of bench 0.4.3 Download bench 0.4.3 archive
0.4.2 Sep 21, 2014 Go to the documentation of bench 0.4.2 Download bench 0.4.2 archive
0.4.1 Jun 20, 2014 Go to the documentation of bench 0.4.1 Download bench 0.4.1 archive
0.4.0 May 29, 2014 Go to the documentation of bench 0.4.0 Download bench 0.4.0 archive
0.3.0 May 25, 2014 Go to the documentation of bench 0.3.0 Download bench 0.3.0 archive
0.2.27 May 19, 2014 Go to the documentation of bench 0.2.27 Download bench 0.2.27 archive
0.2.26 Apr 16, 2014 Go to the documentation of bench 0.2.26 Download bench 0.2.26 archive
0.2.25 Mar 5, 2014 Go to the documentation of bench 0.2.25 Download bench 0.2.25 archive
0.2.24 Feb 19, 2014 Go to the documentation of bench 0.2.24 Download bench 0.2.24 archive

All 44 versions...


This feature is new.
We welcome feedback.
More details: scoring.

We analyzed this package, and provided a score, details, and suggestions below.

  • tool failures on Jan 21, 2018
  • Dart: 2.0.0-dev.15.0
  • pana: 0.10.0


Describes how popular the package is relative to other packages. [more]
0 / 100
Code health derived from static analysis. [more]
81 / 100
Reflects how tidy and up-to-date the package is. [more]
0 / 100
Overall score:
Weighted score of the above. [more]


Detected platforms: web, other

Primary library: package:bench/bench.dart.


  • Fix lib/src/reflect_tests.dart.

    Strong-mode analysis of lib/src/reflect_tests.dart failed with the following error:

    line: 27 col: 51
    The function expression type '(MethodMirror) → bool' isn't of type '(DeclarationMirror) → bool'. This means its parameter or return type does not match what is expected. Consider changing parameter type(s) or the returned type(s).

  • Fix issues reported by dartanalyzer.

    dartanalyzer reported 1 error(s) and 0 warning(s).

  • The description is too short.

    Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

  • Package is pre-v1 release.

    While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction API.

  • Maintain an example.

    None of the files in your example/ directory matches a known example patterns. Common file name patterns include: main.dart, example.dart or you could also use bench.dart.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.0.0 <2.0.0
unittest >=0.11.0 <0.12.0 0.11.7 0.12.4+1
Transitive dependencies
path 1.5.1
stack_trace 1.9.1
Dev dependencies
browser >=0.10.0