2014-12-21 4 views
2

spray을 사용하여 간단한 REST API를 작성 중이며 일부로 모의 데이터로 데이터베이스를 설정하고 테스트 데이터베이스를 사용하여 REST 서버를 가동 할 수 있기를 원합니다.테스트의 일부로 서버를 실행하는 방법은 무엇입니까?

문제는 테스트를 실행하기 위해 테스트 인스턴스를 위로 돌리는 방법을 알지 못한다는 것입니다. 안내해주십시오.

답변

1

sbt의 관점에서 테스트와 생산 코드의 차이점은 대부분 코드의 위치입니다. the configuration scope facility in sbt에 의해 구동 것 :

가 구성 자체 클래스 경로, 소스, 생성 된 패키지 등의 구성 개념은 SBT 관리 종속 라이브러리 종속성에 사용 아이비,에서 오는 잠재적으로, 빌드의 맛을 정의하고,에서 MavenScopes.

Compile에서 수행 할 수있는 작업은 Test에 쉽게 적용 할 수 있으며 그 반대의 경우도 마찬가지입니다. 소리가 나는 것처럼 쉽지는 않을 수도 있지만 길을 따라 많은 농구가 있어서는 안됩니다.

As I pointed out in a comment, sbt run 할 때 마치 sbt compile:run ... 음, 거의 그렇다고 할 수 있습니다. 데이터베이스 및 서버의 테스트 인스턴스를 구성하고 모두 sbt test:run 또는 그 이상으로 실행하십시오. 실행 테스트의 일부분, 즉 sbt it:test으로 실행을 제공 할 통합 테스트 등의 테스트를 작성하십시오. Integration Tests.

1

/src/test에 개체를 추가 할 수 있습니다. 이 객체는 모의 데이타베이스를 사용하는 것과는 달리 정상적으로 서버를 부트 스트랩합니다.

이 객체를 테스트 클래스로 식별하지 않으면 테스트 슈트를 방해하지 않습니다. 이는 사용중인 테스트 시스템에 따라 다릅니다.

예를 들어 Spec2에서는 사양을 확장하는 모든 테스트 클래스가 자동으로 실행됩니다. 이 클래스를 확장하지 않으면 실행되지 않습니다.

추가 패키지 수준의 분리가 현명 할 수 있습니다.

+0

"Object TestSperver extends App"과 같은 것을 시도했지만, "sbt run"을 시도했을 때 실행할 수있는 클래스 중 하나로 표시되지 않았습니다. 나는 그것을하기 위해 무엇을해야합니까? 참조 : https://github.com/ririw/circusoc-backend/blob/master/src/test/scala/com/circusoc/TestTest.scala – riri

+0

''sbt test : run'을 실행해야합니다. –