[SCALA] 전이나 모든 Scalatest 테스트 후 뭔가를하고
SCALA전이나 모든 Scalatest 테스트 후 뭔가를하고
그 scalatest 일련의 시험이 편안한 API의 테스트 다른 엔드 포인트. 난 정말 그들이 최고의 조직을 위해 다른 파일로 분리합니다.
내 문제는 뭔가 시작하는 방법입니다 (내 경우에는 HTTP 서버를하지만 그것이 무엇인지는 중요하지 않습니다) 모든 테스트 전에 모든 테스트 완료 후 종료.
나는 BeforeAndAfterAll에 대해 알고 있지만, 단지 내 하나의 테스트 파일 후 / 전 수행합니다. 나는 그런 일이 필요하지만, 예를 들어 모든 테스트를위한 :
- 시험 전에 시작 HTTP 서버 - 모든 테스트 스위트를 실행 - HTTP 서버 종료
해결법
-
==============================
1.이 작업을 수행하는 구성 방법은 중첩 된 스위트 룸을 사용하는 것입니다. 스위트 룸은 반환이 IndexedSeq [스위트]하는 nestedSuites 방법이있다 (2.0은 1.9.1에서이 목록 [스위트이었다)를. 스위트 룸은 중첩 된 스위트 룸을 실행을 담당하는 runNestedSuites 방법이있다. 기본 runNestedSuites으로 nestedSuites를 호출하고, 각 반환 스위트 룸 중 하나를 발동 직접 실행하거나에 배포자가 전달되는 경우, 대리점에두고 중첩 된 스위트 룸은 병렬로 실행할 수 있습니다 그래서.
이 작업을 수행하는 구성 방법은 중첩 된 스위트 룸을 사용하는 것입니다. 스위트 룸은 반환이 IndexedSeq [스위트]하는 nestedSuites 방법이있다 (2.0은 1.9.1에서이 목록 [스위트이었다)를. 스위트 룸은 중첩 된 스위트 룸을 실행을 담당하는 runNestedSuites 방법이있다. 기본 runNestedSuites으로 nestedSuites를 호출하고, 각 반환 스위트 룸 중 하나를 발동 직접 실행하거나에 배포자가 전달되는 경우, 대리점에두고 중첩 된 스위트 룸은 병렬로 실행할 수 있습니다 그래서.
그래서 당신이 정말로 아마 무엇을 원하는 EndpointTests의 nestedSuites 방법에서 클래스, 그 중 반환 인스턴스에 푸과 바을 것입니다. 차종 쉽게 스위트라고하는 클래스가있다. 다음은 그 사용의 예입니다 :
import org.scalatest._ import matchers.MustMatchers class Foo extends FunSpec with MustMatchers { describe("Message here...") { it("Must do something") { } it("Must be ok") { } } } class Bar extends FunSpec with MustMatchers { describe("Hello you...") { it("One more!") { } } } class EndpointTests extends Suites(new Foo, new Bar) with BeforeAndAfterAll { override def beforeAll(configMap: Map[String, Any]) { println("Before!") // start up your web server or whatever } override def afterAll(configMap: Map[String, Any]) { println("After!") // shut down the web server } }
하나의 잠재적 인 문제는, 그러나, 당신이 검색을 사용하는 경우 것이 EndpointTests 셋 모두, 푸, 그리고 바이 발견되며, 실행에 스위트를 찾을 수 있다는 것입니다. ScalaTest 2.0에서는 @DoNotDiscover와 푸과 바, 주석을 달 수 있습니다, 그리고 ScalaTest의 러너를 발견하지 않습니다. 그러나 SBT 여전히 것이다. 우리는 현재 SBT 그래서 DoNotDiscover로 주석하는 동안 다른 검색 가능 스위트를 전달하는 강화된다, 그러나 이것은 아직 출시되지 SBT 0.13에있을 것입니다. 그 동안 당신은 푸과 바에 사용되지 않은 생성자 매개 변수를 추가하여 그들을 무시하는 SBT를 얻을 수 있습니다.
-
==============================
2.또는 당신은 단지 객체를 사용할 수 있습니다.
또는 당신은 단지 객체를 사용할 수 있습니다.
object TestServer { startServer() }
당신이 개체에 액세스 할 때이 서버를 시작, 초기화됩니다. 그냥 당신이 개체에 액세스하는의 신체의 일반적인 특성을 만듭니다. 그런 다음 모든 테스트에 그 특성을 믹스 인. 끝난.
만약 데몬 모드에서 서버가 실행 (예를 들어, 플레이! 테스트 모드에서 응용 프로그램) 모든 테스트가 실행 후 종료 자동으로됩니다.
-
==============================
3.좋아, 방법을 발견했다. Scalatest는 "마스터"제품군의 기능을 가지고 있지 않습니다 (여기에 누군가가 나를 해결하지 않는 한) 것 같습니다. 하지만 ... 당신은 좀 하나를 구축 할 수 있습니다.
좋아, 방법을 발견했다. Scalatest는 "마스터"제품군의 기능을 가지고 있지 않습니다 (여기에 누군가가 나를 해결하지 않는 한) 것 같습니다. 하지만 ... 당신은 좀 하나를 구축 할 수 있습니다.
당신은 특성에서 제품군을 구성 할 수 있습니다. 내 엔드 포인트 예제를 사용하여 이렇게 :
class EndpointTests extends FunSpec with MustMatchers with BeforeAndAfterAll with Foo with Bar { override def beforeAll(configMap: Map[String, Any]) { println("Before!") // start up your web server or whatever } override def afterAll(configMap: Map[String, Any]) { println("After!") // shut down the web server } }
좋아,하지만 테스트에 대한? 바 푸와를 알 수 있습니다. 나는 특성 등에 따라 테스트를 가져 오는거야. 여기를 봐:
trait Foo extends FunSpec with MustMatchers { describe("Message here...") { it("Must do something") { } it("Must be ok") { } } } trait Bar extends FunSpec with MustMatchers { describe("Hello you...") { it("One more!") { } } }
from https://stackoverflow.com/questions/15423337/doing-something-before-or-after-all-scalatest-tests by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] Groovy의 안전 참조 연산자 최고의 스칼라 모방 (?).? (0) | 2019.11.15 |
---|---|
[SCALA] 스칼라의 forSome 키워드는 무엇입니까? (0) | 2019.11.15 |
[SCALA] 어떻게 JodaTime와 특정 월의 마지막 날짜를 얻으려면? (0) | 2019.11.15 |
[SCALA] 그들이 변경 후 어떻게 build.sbt에서 다시로드 종속성을하게 IntelliJ IDEA를 강제로? (0) | 2019.11.15 |
[SCALA] 어떻게 술어에 의해 두 부분으로 순서를 분할하려면? (0) | 2019.11.15 |