2010-02-22 5 views
6

다음 테스트 클래스에 대한 설정/해체를 수행하는 BeforeClass 및 AfterClass 메소드가있는 JUnit 4 테스트 세트가 있습니다. 내가 필요로하는 것은 스스로 테스트 클래스를 실행하는 것이지만, 각 테스트 클래스에 대해 setup/teardown 시나리오 (BeforeClass 및 AfterClass 또는 그와 비슷한 것)가 필요합니다. 문제는 각 테스트 클래스의 전후에 setup/teardown을 실행하고 싶지 않은 suite를 실행할 때 테스트 스위트에서 setup/teardown을 한 번만 실행하기를 원한다는 것입니다. 가능합니까? 미리 감사드립니다.Junit 4 테스트 스위트 및 개별 테스트 클래스

답변

4

JUnit을 사용하여 표준화 된 방법을 알지 못합니다. 그 이유는 아마도 이미 알고 있듯이 테스트 사례가 서로 독립적으로 실행되어야하기 때문입니다. 이는 각 테스트 방법의 전후에 실행되는 "일반적인"셋업/티 아웃 방법에 관련됩니다. 클래스 설정과 해체는 약간 다릅니다. 비록 테스트를 독립적으로 실행하고 문제 영역에서 벗어나기를 더 좋아하지만 말입니다.

그러나 실제로 무엇을하고 있는지 확신 할 수있는 경우 전역 설정을 사용하여 클래스 설정/해제가 실행되는지 여부를 알리고 클래스 설정/해제 방법으로 상태를 확인할 수 있습니다 . 테스트 스위트에서는 첫 번째 클래스로 특수 클래스를 포함 할 수 있습니다.이 클래스는 설정을 실행하고 실제 테스트 케이스에 클래스 설정/해제 메소드를 실행하지 않아야 함을 나타 내기 위해 전역 플래그를 설정하는 것 이상을 수행합니다. 마찬가지로, 스위트의 특별한 마지막 클래스는 teardown 코드를 실행할 수 있습니다. 주의해야 할 점은 JUnit은 스위트 내에서 테스트 클래스의 실행 순서를 보장하지 않는다는 것입니다.하지만 대부분은 지정된 순서로 실행합니다. 그러나 이는 구현 세부 사항에 불과합니다. 그것을 밖으로 시도하십시오, 그것은 당신을 위해 작동 할 수 있습니다 -하지만 그것은 항상 당신이 기대하는 것을 보장하지 않습니다.

+2

감사를 좋을 걸, 나는 실제로 생각하지만 난 어쩌면 더 나은 솔루션이 생각했다. 그 이유는 설치 프로그램이 환경을 정리하고 데이터베이스를 재설정하여 시간이 걸리므로 각 테스트 클래스에 대해 설치 프로그램을 실행하지 않으려 고하지만 실행해야 할 때가 필요하기 때문입니다. 개별 시험. – Hypnus

3

jUnit 4.7 이상인 경우 규칙 (this blog post에서 설명)이라는 새로운 기능을 살펴 보는 것이 좋습니다. 그것들은 당신이 원하는 것과 정확히 같지 않을 수도 있지만, 아마 jUnit으로 얻는 것이 가장 좋습니다.

아마 TestNG가 더 나은 테스트 그룹화 가능성을 가지고 있지만 실제로 아직 내 자신을 조사하지 않았습니다.

0

아니, Punter Török이 제안한대로 뭔가를 해킹 할 수는 있지만 JUnit에서는 표준 방법이 없습니다.

그러나 JUnit을 악용하는 경우가 많습니다. 단위 테스트의 요점은 각각 입니다. 이것은 테스트 간의 종속성이 전체 유지 관리 악몽 (잘못된 순서로 실행되기 때문에 테스트가 실패 함)을 만들기 때문입니다. 그냥 항상 설치 프로그램을 실행하는 것이 좋습니다 아니라면

그래서 나는이 대답을 ... 당신이 강하게 고려

+0

고마워, ID는 그것을 고려했지만 설정은 모든 테스트 클래스와 홀 테스트보다 훨씬 더 오랜 기간이 있습니다 :) – Hypnus

+0

나는 당신의 고통을 느낍니다 :-(. 실제로 실제로 복잡한 설정 클래스 당 일지라도). "이미 초기화되었습니다."플래그가 아마 최선의 방법 일 것입니다. – sleske