웹 테스트 프레임워크(WebTUnit) 사용 시나리오 1. 웹 테스트 + 테스트 클래스 단위 데이터 관리
해당 테스트 클래스를 웹 테스트 하고, 그 안에 있는 모든 테스트들이 공통의 데이터를 이용할 때 사용할 수 있습니다. 단, 주의할 것은 테스트들 사이에 순서가 없기 때문에(JUnit과 동일) 테스트 데이터를 잘못 조작하면 테스트끼리 의존성 생겨 실패할 수 있습니다. 테스트 마다 각자의 테스트 데이터를 사용하는 시나리오는 다음에 살펴보겠습니다. 이 시나리오는 테스트 데이터를 조작하지는 않고 주로 참조 용으로 테스트 하는 경우에 적당합니다.
@RunWith(WebTestRunner.class)
@WarConfiguration("springsprout")
@DataConfiguration(fileName="integration/sample/testData.xml")
public class SampleWebTest {
@Before
public void setUp(){
System.out.println("===================================");
System.out.println("===================================");
}
@WebTest
public void test1(){
System.out.println("test1");
}
@WebTest
public void test2(){
System.out.println("test2");
fail("for test");
}
@After
public void tearDown(){
System.out.println("***********************************");
System.out.println("***********************************");
}
@Test
public void noTest(){
System.out.println("this will not be print");
}
}
이렇게 했을 경우
1. sprignsprout라는 이름의 WAR 파일을 생성하고,
2. 배포하고,
3. integration/sample/testData.xml에 있는 데이터를 DB에 넣고
4. 테스트를 쫙 실행(순서 무작위, JUnit 동작 방식을 따름), 각각의 테스트는 @WebTest를 붙여줌. @Test는 동작하지 않습니다. @Before, @After, @BeforeClass, @AfterClass, @Ignore 모두 적용 됨. 딱 하나. @Test 대신 @WebTest를 사용하면 됨. @Test를 사용해도 되지만, 테스트 구분을 위해.. 차후에 WebTest관련 기능을 추가할 때 유리할 듯..
5. 테스트가 끝나면(중간에 몇 개가 실패하더라도), 테스트 데이터를 삭제하고,
6. WAR를 unploy합니다.
물론 세부적 예외가 언제 발생하느냐에 따라 그 처리가 조금씩 달라집니다. 지금도 계속해서 이부분을 작업하고 있으니 자세한 설명은 나중에~