【问题标题】:Karma not running unit tests due to "No captured browser" message由于“未捕获浏览器”消息,Karma 未运行单元测试
【发布时间】:2014-02-02 17:22:31
【问题描述】:

我正在尝试设置 Karma 以使用 Jasmine 运行 AngularJS 单元测试,但我无法运行测试。我确定我忽略了一些简单的事情。我在安装了Node.js 并通过npm 安装业力的Windows 7 机器上运行它。

我的目录结构如下:

  • js/app/ - 包含控制器、应用程序等
  • js/config/ - 包含 karma.conf.js
  • js/lib/ - 包含角度
  • js/test/ - 包含茉莉花规格

我正在js 目录中启动命令提示符并运行以下命令:

karma start config/karma.conf.js

这会导致 Chrome 在端口 9876 上运行,但每当我更改任何监视的文件并检查 Karma 输出时,我都会看到以下信息消息:

No captured browser, open http://localhost:9876/

这是我的配置文件:

module.exports = function(config) {
  config.set({
    basePath: '../',
    frameworks: ['jasmine'],
    files: [
      'lib/angular.js',
      'app/**/*.js',
      'test/**/*.js'
    ],
    exclude: [
    ],
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    captureTimeout: 60000,
    singleRun: false
  });
};

我正在使用 Angular 1.2.10 和 Karma 0.10.9

【问题讨论】:

  • Windows 上的 Karma 似乎存在一些问题:您是否尝试过此处建议的解决方案:github.com/karma-runner/karma/issues/635?它可能与chrome二进制文件的路径有关(Karma只知道默认路径),可能是您的防火墙(尝试禁用它一段时间),您还应该查看您的主机文件。
  • 感谢@glepetre,但不幸的是,这些建议都没有奏效。我的主机文件是干净的(新安装的 Windows)并且关闭防火墙没有帮助。我可以让浏览器加载(尝试过 Firefox、Chrome 和 IE),但它只是说 Karma - starting 然后在浏览器中没有显示任何进一步的输出。
  • 我可以确认同样的问题发生在 Mac 上。我不明白为什么需要为不一定链接到 ui 的单元测试打开浏览器。
  • 我认为它们被打开是因为测试框架直接使用了浏览器中的 javascript 运行时引擎。令人沮丧的是它似乎不起作用,但没有人有答案

标签: javascript node.js angularjs karma-runner


【解决方案1】:

不过,我只是在不同的设置(Linux、QUnit、Firefox)中遇到了同样的问题。在我杀死所有业力进程并执行新的karma start 后,问题就消失了。

【讨论】:

    【解决方案2】:

    我有一个face palm momentkarma start 需要与您的 karma.conf.js 文件在同一目录中运行。

    【讨论】:

    • 这也为我解决了问题。老实说,我不认为这对你来说应该是一个面对面的时刻。这是来自 Karma 的非常具有误导性的错误消息。
    • 如果 Karma 不是从与配置文件相同的文件夹运行,则可以将路径传递给配置文件,例如karma start path/to/karma.conf.js
    【解决方案3】:

    此错误可能意味着浏览器找不到服务器。检查您是否可以通过它提到的 URL 访问服务器。它可能是一个错误配置的端口号,甚至(就像我的情况一样),localhost 配置错误。我想这可能是服务器没有运行,或者是其他十几个问题中的任何一个。

    检查您是否可以手动访问服务器。如果不能,请修复它。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,这是测试中的一个错误。删除该代码修复了错误。

      【讨论】:

      • 由于 spec.ts 文件中的一些错误,我也很确定它会这样做......但是我不知道如何跟踪它......
      • 找到了,我的一个文件的导入有错字。楼没捡,服务没捡,跑ng serve没捡...
      【解决方案5】:

      在我的情况下,环境变量 CHROME_BIN 被设置为错误的路径。修复值(可能在/etc/environment中定义)或使用unset CHROME_BIN暂时取消设置环境变量。

      要找到问题的原因,在 Karma 的配置文件中设置日志级别以进行调试很有帮助:

      logLevel: config.LOG_DEBUG,
      

      【讨论】:

        【解决方案6】:

        当我的代码中有一个无限循环时,这发生在我身上。注释掉(在 jasmine 中使用 xdescribe)我最近编写的代码使测试再次运行。

        【讨论】:

          【解决方案7】:

          我遇到了同样的问题并尝试了很多我找到的建议解决方案,但最终为我解决的方法是删除 node_modules 文件夹并通过 npm install 获取所有新内容。

          同样的问题:Karma - Chrome failed 2 times (cannot start). Giving up

          【讨论】:

          • 大声笑,这对我有用。没有什么比旧的重启更能让它工作了。谢谢朋友。
          【解决方案8】:

          我遇到了同样的问题,没有更改代码,只是重新运行一个月前有效的测试。

          我从webstorm跑的时候,好像抓到浏览器的时间比较长,想知道是不是超时了。

          所以我尝试将浏览器设置为 Chrome(我也在使用 phantomjs),然后等待。然后重新设置回ChromePhantomJS,现在就好了。

          【讨论】:

            【解决方案9】:

            我遇到了同样的问题,我按照这里的每个人所说的做了一切,但没有任何结果。就我而言,我没有进行初始化:

            C:\Users>cd c:\xampp\htdocs\angularjs-pro\ch07
            
            c:\xampp\htdocs\angularjs-pro\ch07>karma init
            
            Which testing framework do you want to use ?
            Press tab to list possible options. Enter to move to the next question.
            > jasmine
            
            Do you want to use Require.js ?
            This will add Require.js plugin.
            Press tab to list possible options. Enter to move to the next question.
            > no
            
            Do you want to capture any browsers automatically ?
            Press tab to list possible options. Enter empty string to move to the next question.
            > Chrome
            

            我第二次遇到同样的情况是在我尝试做的时候 karma start 在错误的文件夹中,而不是我放置 karma init 的位置。

            在我解决了我在寡妇控制台中遇到的问题后,在这两种情况下:

            22 11 2016 14:06:51.697:INFO [karma]: Karma v1.3.0 server started at http://localhost:9876/
            22 11 2016 14:06:51.698:INFO [launcher]: Launching browser Chrome with unlimited concurrency
            22 11 2016 14:06:51.711:INFO [launcher]: Starting browser Chrome
            22 11 2016 14:06:53.936:INFO [Chrome 54.0.2840 (Windows 10 0.0.0)]: Connected on socket /#HnJUQrkRPqtGFa5ZAAAA with id 16058274
            

            【讨论】:

              【解决方案10】:

              安装 karma-cli npm install -g karma-cli为我解决了这个问题。 希望这会有所帮助。

              【讨论】:

                【解决方案11】:

                我遇到了同样的问题,我通过从任务管理器中杀死所有 chrome 实例来解决它。似乎有“n”个测试运行器正在运行。当您在不停止服务器的情况下关闭 karma 测试运行程序时,它的实例仍然存在。

                所以按'alt + ctrl + delete',杀死所有chrome会话/实例并重新启动Karma。

                有效!

                【讨论】:

                  【解决方案12】:

                  最近遇到同样的错误:

                  • 一个使用angular-cli的项目,
                  • 在无头环境中在 Jenkins 上运行的测试。

                  原来我之前在运行测试的步骤中取消了 Jenkins 作业,所以 ng test 没有退出(有少数正在运行的 ng 进程,与 [node] <defunct> 的进程配对,阻止了进一步的测试执行)。解决方案是找到并杀死所有挂起的ng 进程:

                  $ sudo -su jenkins
                  # ps aux | grep "ng$" | awk '{print $2}' | xargs kill -9
                  

                  【讨论】:

                    【解决方案13】:

                    我收到了同样的消息,因为我的电脑上没有安装 Chrome。只是铬。好吧,事实证明这是不一样的。现在安装 Chrome 后,“Chrome”和“ChromeHeadless”浏览器都可以启动了。

                    否则,您可能会在配置中指定“Chromium”或“ChromiumHeadless”,然后就可以了。

                    TLDR:确保您实际安装了您正在测试的浏览器。

                    【讨论】:

                      猜你喜欢
                      • 2019-03-18
                      • 1970-01-01
                      • 2018-08-18
                      • 1970-01-01
                      • 2014-01-04
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-08-26
                      • 2021-09-06
                      相关资源
                      最近更新 更多