JUnit Reloaded
참고 : http://today.java.net/pub/a/today/2006/12/07/junit-reloaded.html
Metrix Reloaded를 패러디 한 듯한 제목으로 java.net에 글이 올라왔습니다. 주 내용은 어노테이션을 활용한 JUnit4 활용 예제들이였습니다.
먼저 TestCase 클래스를 상속 받지 않아도 된다는 점.
테스트 메소드의 이름이 test로 시작하지 않아도 된다는 점.(@Test 어노테이션을 사용하면 됩니다.)
setUp() 메소드 대신에 @Before 어노테이션을 사용하면 된다는 점.
저는 위 세가지 정도만을 가지고 유용하게 사용하고 있었습니다. 하지만 이밖에도 몇가지 유용해 보이는 어노테이션들이 있어서 정리해 둡니다.
2. Exception이 발생하는 경우 @Test(expected = Exception.class) 와 같이 선언해주면 try-catch문을 쓰지 않아도 된다.
3. @Test(timeout = 5000) 이런식으로 해당 메소드 수행 시간 제한을 둘 수 있다. 성능 테스트를 할 때 유용할 것 처럼 보인다.
4. @Ignore("메시지") 를 사용해서 잠시 "메시지"로 인해서 이 메소드를 테스트 대상에서 제외 할 수 있다.
5. Test Suite 만다는 방법이 계속 외워지지 않는다.
[#M_more..|less..|
@RunWith(value=Suite.class)
@SuiteClasses(value={CalculatorTest.class, AnotherTest.class})
public class AllTests {...}
http://today.java.net/pub/a/today/2006/12/07/junit-reloaded.html_M#]
코드 출처 :
6. 같은 테스트를 파라미터만 다르게 테스트를 할 수 있다.
[#M_more..|less..|
@RunWith(value=Parameterized.class)
public class FactorialTest {
private long expected;
private int value;
@Parameters
public static Collection data() {
return Arrays.asList( new Object[][] {
{ 1, 0 }, // expected, value
{ 1, 1 },
{ 2, 2 },
{ 24, 4 },
{ 5040, 7 },
});
}
public FactorialTest(long expected, int value) {
this.expected = expected;
this.value = value;
}
@Test
public void factorial() {
Calculator calculator = new Calculator();
assertEquals(expected, calculator.factorial(value));
}
}
코드 출처 : http://today.java.net/pub/a/today/2006/12/07/junit-reloaded.html
_M#]
7. assertEquals(Object o1, Object o2) 조심하기. 이미 한번 대박 삽질을 한 적이 있다.
[#M_ more.. | less.. |
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
_M#]