2017-03-17 5 views
5

그 사람! 제 테스트는 일반 패키지에서 실행됩니다. 테스트를 통과 한 스팍에 테스트 패키지를 설정할 수 있습니까?이 패키지가 테스트를 통과하지 못하면 다른 테스트는 건너 뜁니다. 이 같은 예 보았다패키지 별 Spock 주문 테스트

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({TestJunit1.class, TestJunit2.class})  
    public class JunitTestSuite { 
    } 

을하지만 어쩌면 스팍 내가 다른 많은 패키지에있는 많은 테스트 클래스를 가지고 있기 때문에 내가 대신 각 클래스의 열거 패키지를 사용할 수있는 솔루션을 제공합니다. 또한 제가

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
    Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     }   
     System.out.println(result.wasSuccessful()); 
    } 
} 

메인 쓰레드 그다지 정지 러너

사용 후에. 나는 이유를 모른다. 내가 그런 일을하고 싶지 : 어쩌면
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestRunner { 
    public static void main(String[] args) { 
     Result result = JUnitCore.runClasses(JunitTestSuite.class);  
     for (Failure failure : result.getFailures()) { 
     System.out.println(failure.toString()); 
     } 
     if(result.wasSuccessful()){ 
     JUnitCore.runClasses(JunitTestSuite.class); 
     }else { 
     System.out.println("Build failed"); 
     } 
    } 
} 

또는

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;   
@RunWith(Suite.class)   
@Suite.SuiteClasses({com.example.otherTest.*.class, com.example.otherTests2.*.class})   
    public class JunitTestSuiteFirst { 
    } 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite;  
@RunWith(Suite.class)  
@Suite.SuiteClasses({com.example.test.*.class})  
    public class JunitTestSuiteFirst { 
    } 

이 작업의 더 간단한 해결책 존재한다. 감사.

답변

0

단위 테스트 프레임 워크 내에서 해결할 수있는 모든 것이 멋지지 않을 것입니다. 이것은 단위 테스트가 서로 독립적이라고 가정하기 때문에 테스트 순서 구성에 대한 강력한 지원이 없을 것입니다. 따라서 가장 좋은 방법은 빌드 도구 (Ant, Maven, Gradle 등)에서 솔루션을 찾는 것입니다.

다음 gradle snippet은 단위 테스트의 두 세트/디렉토리를 설정합니다. gradle test integrationTest build 명령으로 src/integration 아래의 테스트는 src/test 아래의 모든 테스트가 통과 한 경우에만 실행됩니다.

sourceSets { 
    integrationTest { 
     java { 
      srcDirs = ['src/integration'] 
     } 
     groovy { 
      srcDirs = ['src/integration'] 
     } 
     resources.srcDir file('src/integration/resources') 
    } 

    test { 
     java { 
      srcDirs = ['src/test'] 
     } 
     groovy { 
      srcDirs = ['src/test'] 
     } 
    } 
} 
+0

내 모든 테스트는 하나의 패키지에서 찾습니다. 네, 시도한 후에 요. 나는 gradle 파일에서 시작하는 차례를 추가했다. 나는 패키지를 위해 하나의 태스크에 exclude를 추가했고 다른 태스크에는 필요한 패키지 만 포함시켰다. 이 작업간에 dependsOn을 설정하십시오. –