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

Unified Diff: chrome/test/data/extensions/api_test/README.txt

Issue 196052: doc api tests (Closed)
Patch Set: Created 11 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/extensions/api_test/README.txt
diff --git a/chrome/test/data/extensions/api_test/README.txt b/chrome/test/data/extensions/api_test/README.txt
new file mode 100755
index 0000000000000000000000000000000000000000..7e1bc05e47185d68af577b816b6cd9c6ae104809
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/README.txt
@@ -0,0 +1,88 @@
+This directory contains extensions which are unit tests for the extension API.
+These tests are written using the extension API test framework, which allows
+us to do end-to-end testing of extension API in a browser_test. The general way
+these tests work is to run code in an extension when they're loaded and to post
+a pass or fail notification back up to the C++ unit test which then reports the
+success or failure. In the common case, the extension runs many subtests and
+then reports up a single pass or fail. This case is made easy by the test
+framework.
+
+To write a new test:
+
+(1) Add a new browser_test which is a subclass of ExtensionApiTest. This test
+should call RunExtensionTest("extension_name") to kick off the test. See
+extension_bookmarks_apitest.cc for an example.
+
+(2) Create an extension of in this directory of the same name as the extension
+that your test referred to ("extension_name" above). This test should load
+either a background page or a toolstrip which immediately starts its test.
+
+(3) In your extension page, call chrome.test.runTests with an array of
+functions which represent your subtests. Each of these functions will most
+likely call one or more async extension APIs. Wrap the callback for each of
+these API calls with chrome.test.callbackPass or chrome.test.callbackFail
+depending on whether or not you're expecting the callback to generate an error
+or not. That's it. The test framework notices when each of these callbacks
+is registered and keeps a count of what's expected. When the right number of
+callbacks has fired, that test function will be marked as passed or failed and
+the next one will be called. Some other useful helper functions you'll use are
+chrome.test.assertTrue(expr, message), chrome.test.assertEq(left, right) and
+chrome.test.log(message).
+
+Here's an example:
+
+chrome.test.runTests([
+ function getTree() {
+ chrome.bookmarks.getTree(chrome.test.callbackPass(function(results) {
+ chrome.test.assertTrue(compareTrees(results, expected),
+ "getTree() result != expected");
+ }));
+ },
+
+ function get() {
+ chrome.bookmarks.get("1", chrome.test.callbackPass(function(results) {
+ chrome.test.assertTrue(compareNode(results[0], expected[0].children[0]));
+ }));
+ chrome.bookmarks.get("42", chrome.test.callbackFail(function(){}, "Can't find bookmark for id."));
+ },
+
+ function getArray() {
+ chrome.bookmarks.get(["1", "2"], chrome.test.callbackPass(function(results) {
+ chrome.test.assertTrue(compareNode(results[0], expected[0].children[0]),
+ "get() result != expected");
+ chrome.test.assertTrue(compareNode(results[1], expected[0].children[1]),
+ "get() result != expected");
+ }));
+ }
+]);
+
+// compareNode and compareTrees are helper functions that the bookmarks test
+// uses for convenience. They're not really relevant to the framework itself.
+
+Note that chrome.test.callbackFail takes a second argument which is the error
+message that it expects to get when the callback fails (chrome.extension.lastError.message).
+
+Here's what the output of this test might look like:
+[==========] Running 1 test from 1 test case.
+[----------] Global test environment set-up.
+[----------] 1 test from ExtensionApiTest
+[ RUN ] ExtensionApiTest.Bookmarks
+( RUN ) getTree
+( SUCCESS )
+( RUN ) get
+( SUCCESS )
+( RUN ) getArray
+( SUCCESS )
+Got EXTENSION_TEST_PASSED notification.
+[ OK ] ExtensionApiTest.DISABLED_Bookmarks (2472 ms)
+[----------] 1 test from ExtensionApiTest (2475 ms total)
+
+[----------] Global test environment tear-down
+[==========] 1 test from 1 test case ran. (2482 ms total)
+[ PASSED ] 1 test.
+1 test run
+0 test failed
+
+Note the RUN/SUCCESS messages in () - these are the subtests that are run in
+the extension itself. Anything printed with chrome.test.log() will also display
+in stdout of the browser test (and hence in the buildbot output for that test).
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698