TDD?
테스트를 먼저 진행한 후 구현하는 테스트 주도 개발 방식
main에는 기능을 구현한 소스코드, text에는 기능을 테스트하는 소스코드를 넣는다.
TDD의 3단계
RED : 실패하는 테스트 케이스를 작성
Green : 어떠한 꼼수를 써서라도 통과하는 테스트 케이스 작성
REFACTORING : 중복을 제거하고 통과한 코드 리팩토링
JUnit?
자바프로그램의 단위 테스트를 위한 대표적인 프레임 워크
JUnit 테스트 어노테이션
@Test : 단위 테스트 메소드임을 나타낸다.
@DisplayName : 테스트 클래스나 테스트 메소드에 이름을 붙여줄 때 사용한다.
@Before : @Before 어노테이션이 선언된 메소드는 @Test 메소드가 실행되기 전 반드시 실행한다.
같은 환경에서 여러 메소드를 테스트하는 경우엔 단위테스트 수행 전 @AfterClass 어노테이션 선언으로 한번만 선언하면 된다.
@After : @After 어노테이션이 선언된 메소드는 @Test 메소드가 실행된 후 반드시 실행한다.
같은 환경에서 여러 메소드를 테스트하는 경우엔 단위테스트 수행 전 @BeforeClass 어노테이션 선언으로 한번만 선언하면 된다.
@Ignore : 테스트를 Skip한다.
Assert?
자바 JUnit의 테스트코드에 사용되어 테스트코드의 가독성과 편의성을 높여 주는 라이브러리
AssertThat() : 테스트를 통해 어떤 조건이 참인지를 검사하는데 사용된다.
public class MyTestClass {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "melon");
// "banana"가 fruits 리스트에 존재해야 함을 테스트
assertThat(fruits, hasItem("banana"));
}
}
AssertTrue() : 값이 True인지 확인할 때 사용하는 메소드이다.
public class Testcase {
@Test
public void testExample() {
int number = 10;
assertTrue(number > 5);
}
}
AssertSame() : 두 객체가 동일한지 확인할 때 사용하는 메소드이다.
public class Testcase {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = str1;
assertSame(str1, str2);
}
}
AssertEquals() : 실제 결과 값과 기대 값이 동일한지 확인하기 위해 사용한다.
public class Testcase {
public static void main(String[] args) {
int a = 5;
int b = 5;
assertEquals(a, b);
}
}
AssertNull() : 주어진 값이 'null'인지 확인하기 위해 사용한다.
public class Testcase {
public static void main(String[] args) {
String nullString = null;
assertNull(nullString);
}
}