使用MozMill测试独立的XUL应用程序

时间:2011-07-29 13:33:03

标签: javascript unit-testing tdd xul mozmill

作为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...
}

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

1 个答案:

答案 0 :(得分:3)

我让它与MozMill扩展一起工作;解压缩扩展程序并编辑以下文件:

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

    <em:targetApplication>
      <Description>
        <em:id>mozmill@example.com</em:id>
        <em:minVersion>0.9</em:minVersion>
        <em:maxVersion>1.1</em:maxVersion>
      </Description>
    </em:targetApplication>`
    
  • 在应用程序的根目录中创建一个文件夹“extensions”(其中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);