簡體   English   中英

由於“未捕獲瀏覽器”消息,Karma 未運行單元測試

[英]Karma not running unit tests due to “No captured browser” message

我正在嘗試設置 Karma 以使用 Jasmine 運行 AngularJS 單元測試,但我無法運行測試。 我確定我忽略了一些簡單的事情。 我在安裝了Node.js並通過npm安裝了 karma 的 Windows 7 機器上npm

我的目錄結構如下所示:

  • 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

不過,我只是在不同的設置(Linux、QUnit、Firefox)中遇到了同樣的問題。 在我殺死所有 karma 進程並重新karma start karma 后,問題就消失了。

我有一臉掌心的時刻 karma start需要在與karma.conf.js文件相同的目錄中運行。

此錯誤可能意味着瀏覽器找不到服務器。 檢查您是否可以通過它提到的 URL 訪問服務器。 它可能是錯誤配置的端口號,甚至(就像我的情況一樣) localhost配置錯誤。 我想這可能是服務器沒有運行,或者其他十幾個問題中的任何一個。

檢查您是否可以手動訪問服務器。 如果你不能,修復它。

當我的代碼中有無限循環時,這發生在我身上。 注釋掉(在 jasmine 中使用xdescribe )我最近編寫的代碼使測試再次運行。

我遇到了同樣的問題,這是測試中的錯誤。 刪除該代碼修復了錯誤。

在我的情況下,環境變量CHROME_BIN設置為錯誤的路徑。 修復該值(可能在/etc/environment定義)或使用unset CHROME_BIN臨時unset CHROME_BIN環境變量。

要找到問題的原因,在 Karma 的配置文件中設置日志級別以進行調試很有幫助:

logLevel: config.LOG_DEBUG,

我遇到了同樣的問題並嘗試了很多我找到的建議解決方案,但最終為我解決的是刪除 node_modules 文件夾並通過 npm install 獲取所有新內容。

相同問題: Karma - Chrome 失敗 2 次(無法啟動)。 放棄

我遇到了同樣的問題,沒有更改代碼,只是重新運行一個月前有效的測試。

當我從webstorm運行時,似乎需要很長時間才能捕獲瀏覽器,所以我想知道它是否超時。

所以我嘗試將瀏覽器設置為Chrome (我也在使用phantomjs ),然后等待。 然后重置回ChromePhantomJS ,現在很好。

我遇到了同樣的問題,我做了這里每個人所說的所有事情,但沒有任何結果。 就我而言,我沒有執行初始化:

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

安裝 karma-cli npm install -g karma-cli為我解決了這個問題。 希望這可以幫助。

我遇到了同樣的問題,我通過從任務管理器中殺死所有 chrome 實例來解決它。 似乎有“n”個測試運行器在運行。 當您在不停止服務器的情況下關閉 karma 測試運行程序時,它的實例仍然存在。

所以按'alt + ctrl + delete',殺死chrome的所有會話/實例並重新啟動Karma。

有用!

最近有同樣的錯誤:

  • 一個使用angular-cli的項目,
  • 在無頭環境中在 Jenkins 上運行的測試。

結果我之前在測試運行的步驟中取消了 Jenkins 作業,所以ng test沒有退出(有一些正在運行的ng進程,與[node] <defunct>配對,阻止了進一步的測試執行)。 解決方案是找到並殺死所有掛起的ng進程:

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

我收到了同樣的消息,因為我的 PC 上沒有安裝 Chrome。 只是鉻。 好吧,事實證明這是不一樣的。 現在安裝 Chrome 后,“Chrome”和“ChromeHeadless”瀏覽器都可以啟動。

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

TLDR:確保您實際安裝了正在測試的瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM