2017-11-06 1 views
0

나는 모두가 다음과 같이 통합 테스트의 몇 가지 있습니다자바 통합 테스트 재사용 기본 설정

  • 응용 프로그램 컨텍스트를 설정을
  • 테스트 데이터베이스를 채 웁니다 테스트 데이터베이스
  • 만들기 데이터

각 통합 테스트마다이 세 가지 초기 단계를 항상 수행하는 데 시간이 걸립니다. 나는 그들이 모든 통합 테스트를위한 일종의 기반이되기를 바란다. 누구나이 경험이 있고 기사, 도구, 스레드 등으로 올바른 방향으로 나를 가리킬 수 있습니까?

도움 주시면 감사하겠습니다.

/리처드

답변

1

여기서 한 가지 옵션은 @BeforeClass 메서드를 사용하여 기본 클래스를 만드는 것입니다. 재사용해야 할 때마다 테스트 클래스로 확장하면됩니다.

또 다른 옵션은 org.junit.runner.notification.RunListener입니다. 예를 들어 다른 이벤트에 코드를 연결할 수있는 가능성을 제공합니다. 시험 시작 시험 등 완료 :

class TestListener extends RunListener { 
    @Override 
    public void testRunStarted(Description description) throws Exception { 
     // Called before any test has started 
    } 

    @Override 
    public void testRunFinished(Result result) throws Exception { 
     // Called when all tests have finished 
    } 

    @Override 
    public void testStarted(Description description) throws Exception { 
    } 

    @Override 
    public void testFinished(Description description) throws Exception { 
    } 

    @Override 
    public void testFailure(Failure failure) throws Exception { 
    } 

    @Override 
    public void testAssumptionFailure(Failure failure) { 
    } 

    @Override 
    public void testIgnored(Description description) throws Exception { 
    } 
} 
당신이 사용할 수있는

심지어 플러그인 구성에 다음 코드를 추가하여 플러그인 또는 안전 장치 플러그인 (통합 테스트) Maven의 확실한 (단위 테스트)와 :

<properties> 
    <property> 
    <name>listener</name> 
    <value>com.your.awersome.TestListener</value> 
    </property> 
</properties> 

이를 솔루션은보다 융통성이 있지만 IMHO는 첫 번째 옵션에 비해 덜 명확합니다. 단 하나의 프로젝트 만 수행해야하는 경우입니다.

2

당신은 Junit5의 @BeforeAll를 사용해야합니다.

설명서에 따르면 @BeforeAll은 주석이 달린 메서드가 현재 테스트 클래스의 모든 테스트 전에 실행되어야 함을 알리는 데 사용됩니다.

따라서 모든 데이터베이스 설정은 모든 단일 방법에 대해 한 번이 아니라 클래스에 대해 한 번만 수행 할 수 있습니다.

+0

하지만 몇 가지 테스트 클래스가 있고 모두에 대한 기반을 원합니다. –

+1

@RichardSilvertass '@ BeforeAll'논리를 사용하여 추상 클래스를 만들고 클래스를 상속받습니다. – dehasi

+0

정확히 @dehasi가 말한 것을 할 수 있습니다. –