Compare Revisions

Writing xpcshell-based unit tests

Change Revisions

Revision 21607:

Revision 21607 by WeirdAl on

Revision 21608:

Revision 21608 by mead on

Title:
Writing xpcshell-based unit tests
Writing xpcshell-based unit tests
Slug:
Writing_xpcshell-based_unit_tests
Writing_xpcshell-based_unit_tests
Tags:
"Automated testing", "Developing Mozilla"
"Automated testing", "Developing Mozilla"
Content:

Revision 21607
Revision 21608
n11      The <a href="/en/xpcshell" title="en/xpcshell">xpcshell</a>n11      The <a href="/en/XPConnect/xpcshell" title="en/xpcshell">xp
> tool can be used to test certain kinds of functionality. Anythin>cshell</a> tool can be used to test certain kinds of functionalit
>g available to the XPCOM layer (through scriptable interfaces) ca>y. Anything available to the XPCOM layer (through scriptable inte
>n be tested with xpcshell. See <a href="/en/Mozilla_automated_tes>rfaces) can be tested with xpcshell. See <a href="/en/Mozilla_aut
>ting" title="en/Mozilla_automated_testing">Mozilla automated test>omated_testing" title="en/Mozilla_automated_testing">Mozilla auto
>ing</a> and <a class="internal" href="/Special:Tags?tag=Automated>mated testing</a> and <a class="internal" href="/Special:Tags?tag
>+testing" title="Special:Tags?tag=Automated+testing">pages tagged>=Automated+testing" title="Special:Tags?tag=Automated+testing">pa
> "automated testing"</a> for pointers to more information.>ges tagged "automated testing"</a> for pointers to more informati
 >on.
nn226    <div class="warning">
227      Usage of the term 'extensions' in this section does not ref
 >er to Add-ons (i.e. extensions built to XPI). xpcshell is not awa
 >re of Add-ons (see {{ Bug("371329") }}), and in particular there 
 >is no support for Add-ons component interfaces to be loaded.
228    </div>
229    <p>
230      An Add-on without additional component interfaces can be te
 >sted by copying component files to the staging area, and then reg
 >istering the components during the test using nsIComponentRegistr
 >ar. See <a class=" external" href="http://mxr.mozilla.org/mozilla
 >-central/source/toolkit/crashreporter/test/unit/" title="http://m
 >xr.mozilla.org/mozilla-central/source/toolkit/crashreporter/test/
 >unit/">CrashReporter unit tests</a> for example of registration o
 >f components during tests using <a href="/en/XPCOM_Interface_Refe
 >rence/nsIComponentRegistrar" title="en/XPCOM Interface Reference/
 >nsIComponentRegistrar">nsIComponentRegistrar</a> (registration of
 > all components in the components subfolder of the current workin
 >g directory), and <a class=" external" href="http://mxr.mozilla.o
 >rg/mozilla-central/source/toolkit/crashreporter/test/Makefile.in#
 >89" title="http://mxr.mozilla.org/mozilla-central/source/toolkit/
 >crashreporter/test/Makefile.in#89">CrashReporter Makefile.in</a> 
 >to see <code>libs::</code> used for creating a folder for compone
 >nt files in the staging area, then copying them (C++ component in
 > this example - for JS see example below).
231    </p>
232    <pre class="brush: shell">
233# Additions to Makefile.in to copy to test staging area
234_JS_COMPONENTS = \
235        ../src/mycomponent.js \
236        ../src/myothercomponent.js \
237        $(NULL)   
238 
239libs::
240        $(NSINSTALL) -D $(DEPTH)/_tests/xpcshell/$(MODULE)/unit/c
 >omponents
241 
242libs::  $(_JS_COMPONENTS)
243        $(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/xpcshell/
 >$(MODULE)/unit/components
244</pre>
245    <p>
246      An unsupported hack to test Add-ons with interfaces is to c
 >opy the generated XPT files to the OBJDIR/dist/bin/components/ fo
 >lder, then delete (or rename) compreg.dat and xpti.dat (to force 
 >registration) before running make xpcshell-tests (for information
 > on running tests, see next section). Be careful not to overwrite
 > existing XPTs.
247    </p>
248    <p>
249      &nbsp;
250    </p>
251    <p>
252      &nbsp;
253    </p>
t230      Tests should be run using <code>make -C <em>OBJDIR/path_to_t258      Tests should be run using <code>make -C <em>OBJDIR/path_to_
>tests/</em></code> <em><code>xpcshell-tests</code></em>. Just <co>tests/</em></code> (to copy tests) and then <code>make -C <em>OBJ
>de>cd</code> to an appropriate directory (e.g. to run tests for a>DIR/path_to_tests/</em></code> <em><code>xpcshell-tests</code></e
> single module, go to <code><a href="/en/MOZ_OBJDIR" title="en/MO>m> (to run tests). Just <code>cd</code> to an appropriate directo
>Z_OBJDIR">MOZ_OBJDIR</a>/<em>path_to_tests</em>/test/</code>) and>ry (e.g. to run tests for a single module, go to <code><a href="/
> run <code>make</code> <em><code>xpcshell-tests</code></em>.>en/MOZ_OBJDIR" title="en/MOZ_OBJDIR">MOZ_OBJDIR</a>/<em>path_to_t
 >ests</em>/test/</code>) and run <code>make</code> <em><code>xpcsh
 >ell-tests</code></em>.

Back to History