2014-05-21 3 views
1

저는 SpringJUnit4ClassRunner 및 contextConfiguration으로 단위 테스트 클래스를 설정하기 위해 헬퍼, 유틸리티, 서비스 등의 스프링 관리 빈을 테스트하는 jUnit 테스트 케이스가 있습니다. 예 : -런타임에 SpringJUnit4ClassRunner를 사용하여 단위 테스트를 조건부로 실행하십시오.

@ContextConfiguration({ "classpath:context-file.xml" }) 
@RunWith(SpringJUnit4ClassRunner.class) 
public class UnitTests { 


@Test 
public void test1() { 
    //... 
} 

@Test 
public void test2() { 
    //... 
} 

@Test 
public void test3() { 
    //... 
} 

@Test 
public void test4() { 
    //... 
} 

} 

이 네 가지 (또는 그 이상) 단위 테스트를 런타임에 일부 조건에서 실행하려고합니다. 인터넷을 사용할 수있는 경우 UnitTests.test1() 테스트를 실행하고 데이터베이스가 연결되어 있으면 UnitTests.test2()를 실행하고 이미지 파일 디렉토리가있는 경우 UnitTests.test3() 테스트를 실행하고 원격 서버가 제대로 응답하면 실행 UnitTests.test4()를 테스트하십시오.

jUnit org.junit.Assume이긴하지만 적합하지는 않지만 테스트 프레임 워크에서 모든 테스트를 실행하거나 모든 테스트를 건너 뛸 수 있습니다. @Ignore 또한 이러한 시나리오에는 적용 할 수 없습니다. 또한 junit-ext (https://code.google.com/p/junit-ext/)까지 갔지만 종속성은 Maven-Central 저장소 (junit-ext-maven-dependency)에서 사용할 수 없습니다. 아무도 여기 코드의 평화로 나를 도와주세요. 정확히 당신이 필요과 같은 워드 프로세서를 기반으로

+0

어딘가에 인증 코드를 써야합니다. Assume에 무엇이 잘못 되었습니까 (SomeTestFixture.somePrecondition())? 기본적으로이 지점에서 실행을 중지하고 테스트를 건너 뛴 것으로 표시합니다. –

답변

2

:

@Test 
public void filenameIncludesUsername() { 
    assumeThat(File.separatorChar, is('/')); //Check here the condition 
    assertThat(new User("optimus").configFileName(), is("configfiles/optimus.cfg")); 
} 

@Test public void correctBehaviorWhenFilenameIsNull() { 
    assumeTrue(bugFixed("13356")); // bugFixed is not included in JUnit 
    assertThat(parse(null), is(new NullDocument())); 
} 

만약 assumeThat()는 테스트 케이스를 무시합니다 실패합니다. @Before 또는 @BeforeClass에서 가정하면 전체 클래스가됩니다. 워드 프로세서

발췌하십시오 @Before 또는 @BeforeClass 방법은

실패한 가정 클래스의 각각에있어서 @Test 실패한 가정 와 동일한 효과를 가질 것이다.

+0

감사합니다 khmarbaise! 바로 사용할 수있는 무언가에 대한 희망이 없다면 더 나은 솔루션 중 하나입니다. – shambhu

관련 문제