2017-12-01 1 views
2

나는 성장할 테스트 스위트 그룹이 있으며, 한 번만 실행해야하는 testcleanup 태스크를 실행해야합니다 모든 테스트가 끝나고 테스트 프로세스가 종료되기 직전입니다. 이것은 .NET AssebmlyCleanup과 비슷하지만 사용자 정의 코드를 수행하지 않고도 Scala/Scalatest 세계에서 상응하는 것을 찾을 수 없었습니다. 나는 이것과이 작업을 수행하는 방법을 접근하는 방법을 생각해 봤는데모든 스위트 룸에서 모든 테스트가 끝난 직후에 한 번만 실행할 수있는 scalaTest 메소드 또는 속성이 있습니까?

감사

답변

4

조금 우리 build.sbt에서 testtestOnly을 무시하는 것입니다.

class Suite1 extends FlatSpec{ 
    "Test1 in Suite1" should "succeed" in{ 
    succeed 
    } 
} 

지금

class Suite2 extends FlatSpec{ 
    "Test1 in Suite2" should "succeed" in{ 
    succeed 
    } 
} 

우리의 정리가 사는 곳의이 /project/ 폴더 CleanUp.scala 개체 아래 추가 할 수 있습니다 :

object CleanUp{ 
    def cleanUp:Unit = println("Cleaning up after all suites are completed.") 
} 

가 있다고 그래서 우리가 src/test/scala에서 다음과 같은 두 개의 스위트 룸이 있다고 가정 최소한의 예를 들자면 실제로 필요한 복잡한 정리 작업이있을 수 있습니다. 지금의 우리 build.sbt의는 다음과 같은 추가 할 수 있습니다 :

(test in Test) := { 
    val testsResult = (test in Test).value 
    CleanUp.cleanUp 
    testsResult 
} 

(testOnly in Test) := { 
    (testOnly in Test).evaluated 
    CleanUp.cleanUp 
} 

이 실행 된 정리 (사용자 스위트에 의해 지정 또는 전체) 모두 스위트 룸 후 적용 할 수 있도록 testtestOnly 작업의 기본 동작을 재정의합니다.

예를 들어, 여기에 새로운 testOnly 내 SBT 콘솔 검사입니다 :

[IJ]sbt:AfterAllTests> testOnly Suite1 
[info] Suite1: 
[info] Test1 in Suite1 
[info] - should succeed 
[info] Run completed in 150 milliseconds. 
[info] Total number of tests run: 1 
[info] Suites: completed 1, aborted 0 
[info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0 
[info] All tests passed. 
Cleaning up after all suites are completed. 
[success] Total time: 0 s, completed Dec 2, 2017 12:19:48 AM 
[IJ]sbt:AfterAllTests> 

그리고 여기에 새로운 test의 검사입니다 : 정리가 호출됩니다 당신이 볼 수 있듯이

[IJ]sbt:AfterAllTests> test 
[info] Suite2: 
[info] Test1 in Suite2 
[info] - should succeed 
[info] Suite1: 
[info] Test1 in Suite1 
[info] - should succeed 
[info] Run completed in 164 milliseconds. 
[info] Total number of tests run: 2 
[info] Suites: completed 2, aborted 0 
[info] Tests: succeeded 2, failed 0, canceled 0, ignored 0, pending 0 
[info] All tests passed. 
Cleaning up after all suites are completed. 
[success] Total time: 2 s, completed Dec 2, 2017 12:28:25 AM 
[IJ]sbt:AfterAllTests> 

. 희망이 도움이됩니다.

관련 문제