作为this question的后续,我正在尝试MozMill测试独立的XUL应用程序(不是firefox扩展)。但是,我还没有“理解”它-更具体地说,如何测试基于XULRunner的应用程序。

例如,考虑this app。现在,我可以从命令行或多或少以这种方式运行它:

$ /path/to/xulrunner /full/path/to/mozmillexample/application.ini


我想编写Mozmill脚本进行测试。例如,我想编写一个像这样的测试,它具有单元测试的“味道”:

 Components.utils.import("chrome://mozmillexample/content/example.js", example);
 var setupModule = function(module) {
     module.controller = mozmill.getBrowserController(); // Or what?
 }

var testEquals = function() {
    jumlib.assertEqual(example.exHello(), "Hello, World!", "Should be equal");
}


我也想写一些功能测试:

 Components.utils.import("chrome://mozmillexample/content/example.js", example);
 var setupModule = function(module) {
     module.controller = mozmill.getBrowserController(); // Or what?
 }

var testAlerts = function() {
    var button = findElement.Elem(document.getElementById('button'));
    button.click();
    controller.window.assertAlert(); // I bet it does not exist but it gives the idea...
}


但是,不幸的是,我没有找到有关测试独立应用程序的任何文档,至少没有文档解释基本步骤。所以我问:是否可以编写像这样的测试?如果可能的话,我该怎么办?

最佳答案

我将其与MozMill扩展程序配合使用;解压缩扩展名并编辑以下文件:


将此添加到install.rdf的正确位置:

<em:targetApplication>
  <Description>
    <em:id>[email protected]</em:id>
    <em:minVersion>0.9</em:minVersion>
    <em:maxVersion>1.1</em:maxVersion>
  </Description>
</em:targetApplication>`

在应用程序的根目录(其中application.ini以及“ chrome”和“ defaults”文件夹位于其中)中创建一个文件夹“扩展名”;将解压后的mozmill扩展名粘贴到此处。
MDC中所述启用扩展管理器
在您的XULRunner应用程序中嵌入MozMill扩展代码:<script src="chrome://mozmill/content/overlay.js"/>
通过添加或修改%appdata%\Adam Brandizzi\MozMill Example\Profiles\123455.default\extensions.ini:[ExtensionDirs]Extension0=C:\Users\John\Desktop\myXULApp\extensions\mozmill启用扩展


使用以下JS代码打开MozMill:MozMill.onMenuItemCommand(event);

08-25 18:30