Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: lib/unittest.dart

Issue 850603002: Moving main library description to README.md (Closed) Base URL: https://github.com/dart-lang/unittest.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « README.md ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Support for writing Dart unit tests. 5 /// Core library for creating unit tests.
nweiz 2015/01/13 00:25:36 Get rid of this line as well.
kevmoo 2015/01/13 00:28:38 Done.
6 ///
7 /// For information on installing and importing this library, see the
8 /// [unittest package on pub.dartlang.org]
9 /// (http://pub.dartlang.org/packages/unittest).
10 ///
11 /// **See also:**
12 /// [Unit Testing with Dart]
13 /// (http://www.dartlang.org/articles/dart-unit-tests/)
14 ///
15 /// ##Concepts
16 ///
17 /// * __Tests__: Tests are specified via the top-level function [test], they ca n be
18 /// organized together using [group].
19 ///
20 /// * __Checks__: Test expectations can be specified via [expect]
21 ///
22 /// * __Matchers__: [expect] assertions are written declaratively using the
23 /// [Matcher] class.
24 ///
25 /// * __Configuration__: The framework can be adapted by setting
26 /// [unittestConfiguration] with a [Configuration]. See the other libraries
27 /// in the `unittest` package for alternative implementations of
28 /// [Configuration] including `compact_vm_config.dart`, `html_config.dart`
29 /// and `html_enhanced_config.dart`.
30 ///
31 /// ##Examples
32 ///
33 /// A trivial test:
34 ///
35 /// import 'package:unittest/unittest.dart';
36 /// main() {
37 /// test('this is a test', () {
38 /// int x = 2 + 3;
39 /// expect(x, equals(5));
40 /// });
41 /// }
42 ///
43 /// Multiple tests:
44 ///
45 /// import 'package:unittest/unittest.dart';
46 /// main() {
47 /// test('this is a test', () {
48 /// int x = 2 + 3;
49 /// expect(x, equals(5));
50 /// });
51 /// test('this is another test', () {
52 /// int x = 2 + 3;
53 /// expect(x, equals(5));
54 /// });
55 /// }
56 ///
57 /// Multiple tests, grouped by category:
58 ///
59 /// import 'package:unittest/unittest.dart';
60 /// main() {
61 /// group('group A', () {
62 /// test('test A.1', () {
63 /// int x = 2 + 3;
64 /// expect(x, equals(5));
65 /// });
66 /// test('test A.2', () {
67 /// int x = 2 + 3;
68 /// expect(x, equals(5));
69 /// });
70 /// });
71 /// group('group B', () {
72 /// test('this B.1', () {
73 /// int x = 2 + 3;
74 /// expect(x, equals(5));
75 /// });
76 /// });
77 /// }
78 ///
79 /// Asynchronous tests: if callbacks expect between 0 and 6 positional
80 /// arguments, [expectAsync] will wrap a function into a new callback and will
81 /// not consider the test complete until that callback is run. A count argument
82 /// can be provided to specify the number of times the callback should be called
83 /// (the default is 1).
84 ///
85 /// import 'dart:async';
86 /// import 'package:unittest/unittest.dart';
87 /// void main() {
88 /// test('callback is executed once', () {
89 /// // wrap the callback of an asynchronous call with [expectAsync] if
90 /// // the callback takes 0 arguments...
91 /// var timer = Timer.run(expectAsync(() {
92 /// int x = 2 + 3;
93 /// expect(x, equals(5));
94 /// }));
95 /// });
96 ///
97 /// test('callback is executed twice', () {
98 /// var callback = expectAsync(() {
99 /// int x = 2 + 3;
100 /// expect(x, equals(5));
101 /// }, count: 2); // <-- we can indicate multiplicity to [expectAsync]
102 /// Timer.run(callback);
103 /// Timer.run(callback);
104 /// });
105 /// }
106 ///
107 /// There may be times when the number of times a callback should be called is
108 /// non-deterministic. In this case a dummy callback can be created with
109 /// expectAsync((){}) and this can be called from the real callback when it is
110 /// finally complete.
111 ///
112 /// A variation on this is [expectAsyncUntil], which takes a callback as the
113 /// first parameter and a predicate function as the second parameter. After each
114 /// time the callback is called, the predicate function will be called. If it
115 /// returns `false` the test will still be considered incomplete.
116 ///
117 /// Test functions can return [Future]s, which provide another way of doing
118 /// asynchronous tests. The test framework will handle exceptions thrown by
119 /// the Future, and will advance to the next test when the Future is complete.
120 ///
121 /// import 'dart:async';
122 /// import 'package:unittest/unittest.dart';
123 /// void main() {
124 /// test('test that time has passed', () {
125 /// var duration = const Duration(milliseconds: 200);
126 /// var time = new DateTime.now();
127 ///
128 /// return new Future.delayed(duration).then((_) {
129 /// var delta = new DateTime.now().difference(time);
130 ///
131 /// expect(delta, greaterThanOrEqualTo(duration));
132 /// });
133 /// });
134 /// }
135 library unittest; 6 library unittest;
136 7
137 import 'dart:async'; 8 import 'dart:async';
138 import 'dart:collection'; 9 import 'dart:collection';
139 import 'dart:isolate'; 10 import 'dart:isolate';
140 11
141 import 'package:matcher/matcher.dart' show DefaultFailureHandler, 12 import 'package:matcher/matcher.dart' show DefaultFailureHandler,
142 configureExpectFailureHandler, TestFailure, wrapAsync; 13 configureExpectFailureHandler, TestFailure, wrapAsync;
143 export 'package:matcher/matcher.dart'; 14 export 'package:matcher/matcher.dart';
144 15
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 /// 463 ///
593 /// This allows for multiple invocations of the unittest library in the same 464 /// This allows for multiple invocations of the unittest library in the same
594 /// application instance. 465 /// application instance.
595 /// This is useful when, for example, creating a test runner application which 466 /// This is useful when, for example, creating a test runner application which
596 /// needs to create a new pristine test environment on each invocation to run 467 /// needs to create a new pristine test environment on each invocation to run
597 /// a given set of test. 468 /// a given set of test.
598 dynamic withTestEnvironment(callback()) { 469 dynamic withTestEnvironment(callback()) {
599 return runZoned(callback, 470 return runZoned(callback,
600 zoneValues: {_UNITTEST_ENVIRONMENT: new _TestEnvironment()}); 471 zoneValues: {_UNITTEST_ENVIRONMENT: new _TestEnvironment()});
601 } 472 }
OLDNEW
« no previous file with comments | « README.md ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698