2016-06-07 3 views
8

(JHipster 프로젝트에서) 새로운 지시문 테스트를 생성 했으므로이 문제가 있습니다. 카르마 단위 테스트는 꿀꺽 거리는 작업에 의해 실행됩니다.카르마 유닛 테스트가 무한 루프에서 계속 반복 실행됩니다.

https://github.com/karma-runner/karma/issues/1077

https://github.com/karma-runner/karma/issues/393

의 차이는 : 나는이 두 가지 (그리고 내가 게시 할 수 없습니다하고 몇 가지 다른) 내가 GitHub의 발견에서 분명히 내 문제는 다르다는 것을 강조하고 싶습니다 카르마는 테스트를 실행 한 적이 없지만 구성된 위치에 무한 수의 테스트가있는 것처럼 루프를 계속 실행합니다. 커맨드 라인 출력에서 ​​명확하게 볼 수 있습니다 :


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) 

그리고 영원히 계속됩니다.

테스트를 통과 또는 실패하거나 ( TypeError, ReferenceError...을) 실패 이유, 테스트에 관계없이 영원히 실행 여부는 중요하지 않습니다

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) 

당신이 할 수 (모든 테스트는 여기에 통과 : 실행 후 거의 한 시간,이 결과 만나다). 명령 줄에서 grunt 작업을 중지 할 경우에만 실행이 중지됩니다.

카르마 구성 및 과음 작업은 지난 몇 개월 동안 변경되지 않았습니다. Singlerun과 autowatch 설정 (다른 것들과 마찬가지로)은 부적합합니다.

테스트중인 코드는 무의미한 것 같습니다. 일부 변경 사항으로 인해 문제는 잠시 사라졌지만 새로운 테스트를 작성하면 항상 돌아옵니다. 물론 처음에는 코드가 문제라고 생각했지만 다음은 논리적 결론이 아닌 이유를 보여줍니다.

새 테스트를 만들 때 이상한 동작이 항상 시작되지만 새 테스트에서는 다른 테스트가 수행하지 않는 특수 작업이나 커버 구성 요소를 사용하지 않으므로 테스트 코드 자체는 무의미한 것처럼 보입니다. 또한 새 테스트가 완전히 비어있는 함수 본문 인 경우에도 여전히 테스트에서 다루어 질 때 문제를 일으키는 프로그램의 새로운 결정 경로가 아니라는 것을 나타내는 이상한 동작이 발생합니다. 그래서 코드가 잘못한 것 같지 않습니다. 무작위 테스트를 해제하여 무한 실행을 막을 수 있었지만 (문제없이 오래 전에 사용했던 테스트), 새로운 테스트를 추가 할 때 항상 문제가 다시 발생했습니다.

환경은 관련이 없습니다. 테스트는 내 Windows 컴퓨터와 Linux 서버의 CI에서 무한히 실행됩니다.

잠시 동안 브라우저가 새로운 기능이나 새로운 테스트와 관련이없는 특정 테스트에서 충돌하기 때문에 (아마도 몇 달 동안 잘 작동했기 때문에) 메모리 제한 문제 일 수도 있다고 생각했습니다. . 내가 그 시험을 끌 때, 그 문제는 잠시 중단되었지만, 나중에 다시 시험에 응시했다.

모든 NPM 패키지와 Bower 구성 요소가 최신 버전으로 업데이트되었지만 무한 반복을 변경하지 않았습니다.

지금은 완전히 아이디어가 없습니다. 누구도 이상한 행동과 콘솔 출력을 만난 적이 있습니까?

+0

오늘 우리에게도 똑같은 일이 생기기 시작했습니다. - 카르마/재스민/someOtherDependency의 출시가 있었는지 궁금합니다. –

+0

우리는 동시에 같은 문제가 발생했음을 우연히 알았을 것입니다! 우리가 이것을 고쳤던 방법에 대한 내 대답을보십시오. –

답변

5

이 문제를 방금 해결했습니다. 문제는 브라우저에서 다른 페이지으로 리디렉션하기 전에 이전에 다양한 작업을 수행하는 응용 프로그램에 로그 아웃 기능이 있다는 것입니다. 로그 아웃 기능에 추가 한 테스트 중 하나가 창 조롱이 아니 었습니다.리다이렉트 콜 (recirect call)을 수행하고 카르마 테스트 실행에서 이것이 실행되면 루핑 동작이 발생합니다.

이 호출을 조롱하거나 감시하면 루핑 동작이 중지됩니다.

이 문제가 귀하와 동일한 문제인지 잘 모르겠지만이 정보가 도움이 될 것입니다.

+0

감사합니다. 완전히 도움이되었습니다. 브라우저가 자원을 다운로드하게하는 코드 평온에 대한 테스트가 많이 있습니다 :'$ window.location = "..."'. 그 전화를 감시하는 것은 문제를 해결했습니다. 내 마음을 괴롭히는 유일한 이유는 내가 반복적으로 반복을 멈출 수 있었지만 새로운 테스트를 작성하면서 돌아 왔다는 것입니다. 리다이렉트 (redirecting)로 인한 메모리 누수가 발생하여 모든 테스트에서 비정상적인 메모리 소비가 발생할 수 있다고 생각하십니까? 그렇다면 리디렉션 조롱이 문제를 영구적으로 해결할 것으로 확신합니다. 그렇지 않으면 반복이 다시 돌아올 것 같네요. – user436357

+0

리다이렉트는 처리 시간이 걸리기 때문에 리다이렉트 이후에 더 많은 테스트를 추가하면 리디렉션 처리 시간이 늘어나고 루핑이 시작되기 때문에이 동작이 발생한다고 생각합니다. 이론상 카르마에서 실행되는 마지막 테스트에서 리디렉션이 발생하면 카르마 실행이 리디렉션이 발생하기 전에 종료되므로 루프가 표시되지 않습니다. –

+0

P. 내 대답이 마음에 든다면 받아주세요 :) –

관련 문제