2016-08-29 2 views
2

나는 스프링 부트로 작성된 응용 프로그램을 가지고 있으며이를위한 통합 테스트를 작성하려고합니다. 스프링 부트 애플리케이션을 실행하고 종료 될 때까지 기다려서 어떤 상태를 주장 할 수 있습니다.스프링 부트 테스트 - 종료 대기

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(MyApp.class) 
@IntegrationTest("initParams") 
public class Test { 
    @Test 
    public void test() { 
    // need to wait until termination 
    } 

응용 프로그램 코드를 수정하지 않고 Spring 응용 프로그램의 종료를 기다릴 수있는 방법이 있습니까?

+0

테스트 자체에서 앱을 실행 해 보았습니까? –

+0

어떻게해야합니까? – KTrum

+0

제 대답과 귀하의 의견에서, 제가 묻고있는 것을 오해 한 것 같습니다. 응용 프로그램을 실행하고 실행 상태에서 통합 테스트를 실행하는 이유는 원하는 것 같습니다. 그러나 혼동은 테스트의 주석에서 비롯됩니다. // 종료 될 때까지 기다려야합니다. – alexbt

답변

1

, 실제로 테스트의 일부로 응용 프로그램을 실행하기보다는 테스트 컨텍스트를시키는 것은 당신을 위해 그것을 시작하는 것이 좋습니다 것입니다. 왜 필요한지 잘 모르겠지만 모든 유스 케이스에서 권장하지는 않지만 작동 할 수 있습니다.

public class Test { 

    @Test 
    public void test() { 
    String[] args = new String[]{"initParams"}; // To adapt 
    ConfigurableApplicationContext ctx = SpringApplication.run(MyApp.class, args); 
    // whatever 
    ctx.close(); 
    // whatever after the app has terminated. 
    } 
} 
1

좋은 생각인지 잘 모르겠지만 여기에 있습니다. @After@AfterClass 방법으로 몇 가지 주장을 수행 할 수 있습니까?

테스트가 종료 앱이 필요하면 경우
@After 
public void afterMethods() { 
    //asserts 
} 

@AfterClass 
public static void afterClass() { 
    //asserts 
} 
+0

테스트 자체가 즉시 종료되므로 작동하지 않을 것이라고 생각합니다. ( – KTrum

+0

무슨 뜻인지 잘 모르겠습니다. 테스트가 스프링 부트 설정을로드하면, 일반적으로 무언가를 선언 한 다음 테스트가 끝납니다. 질문을 통해, 테스트 후 "테스트"방법을 찾고 있다고 생각했습니다. – alexbt

관련 문제