2014-01-15 1 views
0

기존 시스템에 새로운 스칼라 코드를 통합하려고합니다. 우리의 데이터베이스 테스트는 현재 시스템 속성 "통합"을 설정하여 (Maven 및 기존 IDE 구성을 통해) 트리거됩니다. 이를 통해 다음과 같이 할 수 있습니다.ScalaTest에서 시스템 속성을 통해 테스트 태그를 지정하는 방법

mvn test -Dintegration 

데이터베이스 테스트가 포함됩니다. 우리가 부동산을 떠나면 테스트는 건너 뜁니다. 기본적으로, 기존 JUnit 테스트 (이것은이 그 조금 청소기,하지만 당신은 포인트를 얻을 수 있습니다)이 있습니다

assumeTrue(System.getProperty("integration") != null) 

나는 새 스칼라 코드를 추가 해요으로 (참고 : 모든 그래서 다시 JUnitRunner를 사용하여 그냥 작동), 그리고 그 동등한 일을 할 수 있어야합니다 .... 그리고 나는 전체 인프라 (지속적인 통합 등)을 재건 싶지 않아요 ... 내가 차라리 기본 특성을 작성하거나 시스템 속성을 테스트를 건너 뛰거나 포함 할 수있는 무언가로 변환 할 수있는 무언가.

아이디어가 있으십니까?

답변

1

소스를 읽었으며 JUnitRunner가 현재 양식으로 태그를 제공하는 것을 지원하지 않는 것처럼 보입니다. 그러나 코드는 간단합니다. 따라서 가장 좋은 방법은 기존 주자의 코드를 복사하여 내 필요에 맞게 수정하는 것입니다.

다음

패키지 권한에 따른 요구 사항이었다 등

  1. 당신이 필요로하는 비트 당신은 (조직 같은 패키지에 클래스를 넣어야 할
  2. 개인이기 때문에 당신은 JUnitRunner를 서브 클래스 수 없습니다. scalatest.junit) 그 외에는

, 당신은 단순히로 실행() 메소드를 기존 JUnitRunner를 복사하고 수정할 수 있습니다

def run(notifier: RunNotifier) { 
    val ignoreTags = Set("org.scalatest.Ignore") // the built in ignore support 
    val integrationTags = Set(DbTest.name) 
    val (tagsToRun, tagsToSkip) = 
     (if (System.getProperty("integration") == null) 
     (None, integrationTags ++ ignoreTags) 
     else 
     (Some(integrationTags), ignoreTags) 
     ) 
    try { 
     suiteToRun.run(None, Args(new RunNotifierReporter(notifier), 
     Stopper.default, Filter(tagsToRun, tagsToSkip), Map(), None, 
     new Tracker, Set.empty)) 
    } 
    catch { 
     case e: Exception => 
     notifier.fireTestFailure(new Failure(getDescription, e)) 
    } 
    } 
+0

+1은 소스를 읽지 만, /는 소스입니다. –

+0

sed 수정을위한 thx –

관련 문제