Sono di fronte a questo problema da quando ho creato una serie di nuovi test di direttiva (in un progetto JHipster). I test dell'unità karma vengono eseguiti da un task grunt. Vorrei sottolineare con chiarezza che il mio problema è diverso da questi due (e pochi altri non mi è permesso di inviare) che ho trovato su GitHub:Test di unità Karma eseguiti ripetutamente in un ciclo infinito
https://github.com/karma-runner/karma/issues/1077
https://github.com/karma-runner/karma/issues/393
la differenza è quel karma non viene mai eseguito eseguendo i test, ma continua a eseguirli in un ciclo come se ci fosse un numero infinito di test nella posizione configurata. Può essere visto chiaramente sull'output della riga di comando:
Firefox 45.0.0 (Windows 7 0.0.0): Executed 321 of 192 (skipped 7) SUCCESS (0 secs/1 min 3.757 secs)
Chrome 51.0.2704 (Windows 7 0.0.0): Executed 399 of 192 (skipped 11) SUCCESS (0 secs/1 min 2.239 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 444 of 192 (skipped 11) SUCCESS (0 secs/1 min 0.515 secs)
E va avanti all'infinito. Dopo quasi un'ora di esecuzione, questo è il risultato:
Chrome 51.0.2704 (Windows 7 0.0.0): Executed 20171 of 192 (skipped 472) SUCCESS (0 secs/50 mins 7.281 secs)
Firefox 45.0.0 (Windows 7 0.0.0): Executed 3186 of 192 (skipped 72) DISCONNECTED (14 mins 48.503 secs/12 mins 16.547 secs)
PhantomJS 2.1.1 (Windows 7 0.0.0): Executed 27054 of 192 (skipped 611) DISCONNECTED (48 mins 25.253 secs/47 mins 34.776 secs)
Non importa se i test passano o falliscono, o perché non riescono (TypeError, ReferenceError...
), i test eseguiti per sempre a prescindere (tutti i test passano qui, come si può vedere). L'esecuzione si interrompe solo se interrompo il task grunt nella riga di comando.
La configurazione del Karma e le attività del grunt non sono cambiate negli ultimi mesi. Le impostazioni Singlerun e Autowatch (così come tutte le altre) sono irrilevanti.
Il codice in prova sembra essere irrilevante. Alcuni cambiamenti, hanno reso il problema andare via per un po ', ma mentre scrivo nuovi test, torna sempre. Naturalmente all'inizio pensai che il mio codice fosse la colpa, ma i seguenti mostreranno perché non è una conclusione logica.
Lo strano comportamento inizia sempre quando si crea un nuovo test, ma il codice di test in sé sembra irrilevante, in quanto i nuovi test non utilizzano mai operazioni speciali o componenti di copertina che altri test non fanno. Inoltre, anche se il nuovo test è un corpo di funzione completamente vuoto, risulta comunque lo strano comportamento che suggerisce che non è un nuovo percorso decisionale nel programma che causa il problema se coperto da test. Questo è il motivo per cui non credo che il codice sia la colpa. Sono anche riuscito a interrompere l'esecuzione infinita disattivando test casuali (che usiamo molto tempo fa senza problemi), ma il problema è sempre tornato quando ho aggiunto nuovi test.
L'ambiente è irrilevante. I test si eseguono all'infinito sulla mia macchina Windows e in CI su un server Linux.
Ho anche pensato che potrebbe trattarsi di un problema di limitazione della memoria, perché per un po 'i browser si sono bloccati a un determinato test che non ha nulla a che fare con la nuova funzione oi nuovi test (e ha funzionato bene per mesi) . Quando ho disattivato il test, il problema è cessato per un po 'ma in seguito è tornato di nuovo (come ho continuato a scrivere test).
Ho aggiornato tutti i pacchetti NPM e i componenti Bower all'ultima versione, ma questo non ha modificato il ciclo infinito.
Ormai sono totalmente privo di idee. Qualcuno ha mai riscontrato un comportamento così strano e l'uscita della console?
La stessa cosa ha iniziato a succedere a noi oggi - mi chiedo se ci sia stato un rilascio di karma/gelsomino/qualche altra dipendenza che potrebbe causare questo? –
Deve essere stata una coincidenza che abbiamo avuto lo stesso problema allo stesso tempo! Vedere la mia risposta qui sotto per come l'abbiamo risolto. –