提交 | 用户 | 时间
|
58d006
|
1 |
Unit tests, written with [QUnit](http://docs.jquery.com/QUnit), are used to |
A |
2 |
expose bugs for squashing, prevent bugs from respawning, and suppress new |
|
3 |
bugs when adding new features and making changes. |
|
4 |
|
|
5 |
# Running the tests |
|
6 |
|
|
7 |
The simplest way to run the tests is to open `tests/tests.html` in your browser. |
|
8 |
The test suites will automatically run themselves and present their results. |
|
9 |
|
|
10 |
To run the tests from the command line, download and install |
|
11 |
[PhantomJS](http://phantomjs.org/), and run `run-qunit.js` with it: |
|
12 |
|
|
13 |
$ cd tests/ |
|
14 |
$ phantomjs run-qunit.js tests.html |
|
15 |
|
|
16 |
Failed tests and their failed assertions will be printed to the console. A |
|
17 |
results summary will be printed at the end. |
|
18 |
|
|
19 |
To generate coverage statistics, use [JSCoverage](http://siliconforks.com/jscoverage/) |
|
20 |
to instrument the js files: |
|
21 |
|
|
22 |
$ cd tests/ |
|
23 |
$ jscoverage ../js/ ../instrumented/ |
|
24 |
$ phantomjs run-qunit.js tests.html |
|
25 |
|
|
26 |
Coverage percentage will be included in the output summary, and a highlighted |
|
27 |
line-by-line html file will be generated. |
|
28 |
|
|
29 |
# Shout-out |
|
30 |
|
|
31 |
Thanks to Rod @ While One Fork for the |
|
32 |
[CIS guide](http://whileonefork.blogspot.com/2011/10/integrating-javascript-tests-into-cli.html) |
|
33 |
on putting the above together. |
|
34 |
|
|
35 |
# Adding tests |
|
36 |
|
|
37 |
Tests go in js files in the `tests/suites/` directory tree. QUnit organizes |
|
38 |
tests into suites called "modules"; there is one module per js file. If the |
|
39 |
tests you are adding do not fit into an existing module, create a new one at |
|
40 |
`tests/suites/<new module>.js`, where `<new module>` is a broad yet |
|
41 |
descriptive name for the suite. If tests have many year-specific cases (ie, |
|
42 |
behave differently in leap years vs normal years, or have specific buggy |
|
43 |
behavior in a certain year), create the module in a new directory, |
|
44 |
`tests/suites/<new module>/<year>.js`, where `<new module>` is the decriptive |
|
45 |
name and `<year>` is the four-digit year the tests pertain to. |
|
46 |
|
|
47 |
In order for new tests to be run, they must be imported into `tests/tests.html`. |
|
48 |
Find the script includes headed by the html comment `<!-- Test suites -->`, and |
|
49 |
add a new one to the list which includes the new js files. |
|
50 |
|
|
51 |
# Can I use this? |
|
52 |
|
|
53 |
By all means, please do! Just note that I stopped working on this structure |
|
54 |
once it fit my needs, there's no real support for it, and it may change in the |
|
55 |
future. Otherwise, have at it. |