JUnit의 올바른 사용 (또는 적어도 문서)이 매우 혼란 스럽다는 것을 알았습니다. 이 질문은 향후 참조 및 실제 질문으로 사용됩니다.
내가 올바르게 이해했다면 JUnit 테스트를 만들고 실행하는 두 가지 주요 접근법이 있습니다.
접근법 A (JUnit 3 스타일) : TestCase를 확장하는 클래스를 작성하고 단어로 테스트 메소드를 시작하십시오 test
. 클래스를 JUnit 테스트 (Eclipse에서)로 test
실행 하면 단어 로 시작하는 모든 메소드 가 자동으로 실행됩니다.
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
접근법 B (JUnit 4 스타일) : '일반'클래스 @Test
를 작성하고 메소드 앞에 주석을 추가하십시오 . 단어로 메소드를 시작할 필요는 없습니다 test
.
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
두 가지를 혼합하는 것은 좋은 생각이 아닌 것 같습니다. 예를 들어이 stackoverflow question을 참조하십시오 .
이제 내 질문 :
- 선호하는 방법은 무엇입니까 , 아니면 언제 다른 방법을 사용합니까?
- 접근법 B는에서와 같이 @Test 주석을 확장하여 예외 테스트를 허용합니다
@Test(expected = ArithmeticException.class)
. 그러나 접근법 A를 사용할 때 예외를 어떻게 테스트합니까? 접근법 A를 사용할 때 다음과 같이 테스트 스위트에서 여러 테스트 클래스를 그룹화 할 수 있습니다.
TestSuite suite = new TestSuite("All tests");
suite.addTestSuite(DummyTestA.class);
suite.addTestSuite(DummyTestAbis.class);
그러나 이것은 각 테스트 클래스가 TestCase를 서브 클래스 화해야하기 때문에 접근법 B와 함께 사용할 수 없습니다. 접근법 B에 대한 테스트를 그룹화하는 올바른 방법은 무엇입니까?
편집 : JUnit 버전을 두 가지 접근법 모두에 추가했습니다.
extends TestCase
각각의 테스트@Test
에 혼란을주기 위해 주석을 달았다 . :)