2010-08-19 2 views
1

@Before 메서드를 모두 실행 한 다음 @Test 메서드를 모두 실행 한 다음 @After 메서드를 모두 실행하려는 junit 러너를 원합니다.junit suite tests : 모든 @Before, 모든 @Test, 모든 @After

이것은 내 시스템 테스트의 작동 방식입니다. 테스트 데이터 및 시나리오를 설정하기 위해 @Before 메서드가 실행됩니다. 응용 프로그램이 시작됩니다. 그런 다음 @Test 메서드는 백그라운드에서 실행중인 응용 프로그램과 함께 실행됩니다. 이러한 @Test 메서드는 데이터를 변경하거나 응용 프로그램에 응답 할 수 있습니다. 그런 다음 프레임 워크는 응용 프로그램이 끝나기를 기다립니다. 그 후에 @After 메소드가 실행되어 테스트 결과를 확인합니다.

이미 junit 주석, 단정 방법 및 기타 다양한 비트를 사용하고 있습니다. 하지만 나는 이런 식으로 테스트 메소드를 실행하는 데 주니어 주자를 사용하는 방법을 알아낼 수 없습니다. junit 4.8에서 "컴퓨터"인터페이스의 머리와 꼬리를 만들 수 없거나 규칙을 적용하는 방법을 파악할 수 없습니다.

+1

질문 곳, 거기에 있습니까? –

+0

와우 덕분에 내 질문에 깜빡했습니다. 편집 됨 ... – DragonFax

답변

1

이것은 JUnit의 기능이 아닙니다. JUnit은 독립적 인 단위 테스트를 강조하는 디자인 철학을 가지고 있습니다. 따라서 시스템 테스트를위한 자연스러운 프레임 워크가 아닙니다. 원하는 것은 TestNG에 적합합니다 (설계 목표가 유닛 테스트와 시스템 테스트를 모두 차지하려고합니다).

JUnit에서 @Before 및 @After는 전후에 각각 테스트를 실행합니다. 모든 테스트를 참조하고 모든 설정과 해체를 담당하는 Suite를 사용하여 JUnit에 이런 종류의 것을 구울 수 있으므로 스위트의 @BeforeClass 및 @AfterClass 메소드가 스위트 전후에 실행됩니다. 정확하게 모든 시스템 테스트가 될 수 있습니다.

JUnit 방식으로 코드가 커지면 코드에 많은 어려움이 있습니다. 따라서 원하는대로 수행 할 수 있다면 많은 대안을 고려해 볼 것을 제안합니다.

+0

좋은 지적, 나는 junit의 영역을 떠났습니다. 그것을 나 자신에게 인정하고, 계속 전진 할 그것의 시간. (내 비 - 단위 테스트를 위해 적어도). – DragonFax

0

당신은 단지 하나의 실제 테스트 방법을 만들어서이 문제를 해결할 수 있다고 생각합니다. 단지 전화가 당신의 실제 테스트이기 때문에, 당신은 그렇게 선언하지 마십시오.

좀 좋아 :

@Before 
public void beforeTest(){} 

@After 
public void afterTest(){} 

@Test 
public void test(){ 
    test1(); 
    test2(); 
    test3(); 
} 

public void test1(){} 

public void test2(){} 

public void test3(){} 
관련 문제