2016-06-02 5 views
2

Play 프레임 워크에서 각도 앱을 실행 중입니다. 내 카르마/재스민 테스트 제품군에 추가 된 다음과 같은 build.sbt의 설정과 "SBT 시험"의 일부로 실행 한 ...카르마 테스트 실패시 SBT 종료

// run the angular JS unit tests (karma & jasmine) 
lazy val jsTest = taskKey[Int]("jsTest") 
jsTest in Test := { 
    "test/js/node_modules/karma/bin/karma start karma.conf.js" ! 
} 
test := Def.taskDyn { 
    val exitCode = (jsTest in Test).value 
    if (exitCode == 0) 
    Def.task { 
     (test in Test).value 
    } 
    else Def.task() 
}.value 

그러나 테스트 중 하나가 실패 할 경우, SBT는하지 않는 것 나는 또한 SBT DIST를 실행하고 나는 테스트가 실패하면 이런 일이하고 싶지 않은 SBT 테스트를 실행 한 후 ...

Chrome 50.0.2661 (Mac OS X 10.10.5): Executed 90 of 90 (1 FAILED) (0.512 secs/0.453 secs) 
[success] Total time: 3 s, completed 02-Jun-2016 12:11:13 

를 종료합니다. JS 또는 스칼라 테스트가 실패하면 sbt를 종료하고 싶습니다.

감사합니다.

답변

1

카르마의 종료 코드가 0이 아니더라도 SBT test 작업을 성공하게하는 것처럼 보입니다. 간단한 수정은이 경우에 예외를 발생하는 것입니다, 그리고 SBT는 작업 실패로 감지 :

lazy val jsTest = taskKey[Int]("jsTest") 
    jsTest in Test := { 
    "test/js/node_modules/karma/bin/karma start karma.conf.js" ! 
    } 
    test := Def.taskDyn { 
    val exitCode = (jsTest in Test).value 
    if (exitCode == 0) 
     Def.task { 
     (test in Test).value 
     } 
    else sys.error("Karma tests failed with exit code " + exitCode) 
    }.value 

하지만 지금 당신이 jsTest 작업이 기술적으로 여전히 생각도 성공하고 이상한 상황에있어 테스트가 실패합니다. 당신이 할 수있는,

lazy val jsTest = taskKey[Unit]("jsTest") 
    jsTest in Test := { 
    val exitCode = "test/js/node_modules/karma/bin/karma start karma.conf.js" ! 
    if (exitCode != 0) { 
     sys.error("Karma tests failed with exit code " + exitCode) 
    } 
    } 
    test := Def.taskDyn { 
    (jsTest in Test).value 
    Def.task((test in Test).value) 
    }.value 

당신은 괜찮아요 경우 JS 테스트를 갖는 및 스칼라는 병렬로 실행 테스트 : jsTest 작업이 오류 코드를 확인하기 위해 더 적절한 것, 그리고 test 작업에 의존 더 간단하게 :

lazy val jsTest = taskKey[Unit]("jsTest") 
    jsTest in Test := { 
    val exitCode = "test/js/node_modules/karma/bin/karma start karma.conf.js" ! 
    if (exitCode != 0) { 
     sys.error("Karma tests failed with exit code " + exitCode) 
    } 
    } 
    test := { 
    (jsTest in Test).value 
    (test in Test).value 
    } 
+0

"test/js/node_modules/karma/bin/karma start karma.conf.js"! 은 괄호 안에 있어야합니다. – jellobird