2011-09-27 5 views
0

AbstractTestNGSpringContextTests를 확장하는 단일 TestNG 테스트 내에 테스트 케이스를 작성했습니다. ApplicationContext가 올바르게 설정되었고 테스트 케이스 안에서 사용할 수 있습니다.TestNG : 여러 테스트 클래스에서 ApplicationContext 사용

문제는 applicationContext를 설정하는 데 약간의 시간이 걸릴 수 있으며 필자가 가지고있는 모든 테스트 클래스에 대해이 작업을 수행하고 싶지 않다는 것입니다. 이는 내 관점에서 불필요한 시간이 걸리기 때문입니다.

내 질문은 : 한 번만 설정되는 동일한 Spring ApplicationContext를 사용하여 둘 이상의 TestNG 테스트 클래스를 실행할 수 있습니까?

감사와 안부, 로버트

답변

1

어떻게 @BeforeSuite 사용에 대한?

+0

고맙습니다. 왜 내가 전에 그 특별한 주석을 발견하지 못했는지 모르겠습니다. 이제는 @BeforeSuite를 사용하여 ApplicationContext와 Selenium Webdriver를 다시 사용할 수있게되었습니다. –

0

에서 토마스 Nurkiewicz (@ 토마스 - nurkiewicz)에서 관련 기사를 참조하십시오, 그 컨텍스트는 캐시와 동일한 고유 컨텍스트를 선언 이후의 모든 시험을 위해 다시 사용됩니다 동일한 테스트 스위트 내의 구성.

Spring TestContext 프레임 워크는 응용 프로그램 컨텍스트를 정적 캐시에 저장합니다. 즉, 컨텍스트는 문자 그대로 정적 변수에 저장됩니다. 즉, 테스트가 별도의 프로세스에서 실행되는 경우 각 테스트 실행 사이에 정적 캐시가 지워지고 캐싱 메커니즘이 효과적으로 비활성화됩니다.

캐싱 메커니즘을 이용하려면 모든 테스트가 동일한 프로세스 또는 테스트 제품군 내에서 실행되어야합니다. IDE 내에서 모든 테스트를 그룹으로 실행하면이 작업을 수행 할 수 있습니다. 마찬가지로, Ant, Maven 또는 Gradle과 같은 빌드 프레임 워크로 테스트를 실행하는 경우 빌드 프레임 워크가 테스트간에 분기하지 않는지 확인하는 것이 중요합니다. 예를 들어, Maven Surefire 플러그인의 forkMode가 always 또는 pertest로 설정된 경우 TestContext 프레임 워크는 테스트 클래스간에 응용 프로그램 컨텍스트를 캐시 할 수 없으며 결과적으로 빌드 프로세스가 상당히 느리게 실행됩니다.

관련 문제