Java는 if/else문(조건문)과 Switch/case문(선택문)을 제공한다.
if(condition)
{
// If condition is true then this block of statements will be executed
}
else if(condition)
{
// If condition is true then this block of statements will be executed
}
else
{
// If none of condition is true, then this block of statements will be executed
}
switch(조건식){
case 값1:
실행 코드
break;
case 값2:
실행 코드
break;
case 값3:
실행 코드
break;
default: case에 해당하는 값이 없을 때 실행할 코드
break;
}
/*
case 값의 개수는 임의로 설정 가능
break : 코드가 실행되다가 break를 만나면,
바로 실행을 중지하고 해당 loop에서 빠져나옴
*/
코드를 조건에 맞게 반복해주는 구문을 말한다.
반복문에는 for문, while문, do-while문, for-each(향상된 for문)이 있다.
for(int i=0;i<10;i++){
//코드 0~9회 즉, 10번 실행
}
int i=0;
while(i<10){
//코드 10회 반복
i++; //for문과 달리 증감식이 없기 때문에 증감식을 통해 유한적인 조건이 되게함
}
int i=0;
do{
//코드 10회 반복
i++;
}while(i<10);
List<Integer> list = new ArrayList<>();
for(int i=0;i<5;i++){
list.add(i);
}
for(int num : list){
//1부터 5를 list에서 하나씩 가져와 출력
System.out.println(num);
}
JUnit 5버전에는 Java 8 이상의 새로운 기능을 지원하고 다양한 스타일의 테스트를 가능하게 하는 것을 목표로하는 기능들이 많이 포함되어 있다.
JUnit 5는 세 가지 하위 프로젝트의 여러 모듈로 구성된다.
플랫폼은 JVM에서 테스트 프레임 워크를 시작하는 역할을 한다. JUnit과 빌드 도구와 같은 클라이언트 간의 안정적이고 강력한 인터페이스를 정의한다.
또한 JUnit 플랫폼에서 실행되는 테스트 프레임 워크를 개발하기 위한 TestEngine API를 정의한다.
이를 통해 사용자 정의 TestEngine을 구현하여 타사 테스트 라이브러리를 JUnit에 직접 플러그인 할 수 있다.
이 모듈에는 JUnit 5에서 테스트를 작성하기위한 새로운 프로그래밍 및 확장 모델이 포함되어 있다. JUnit 4와 비교 한 새로운 주석은 다음과 같다.
@TestFactory
– 동적 테스트를위한 테스트 팩토리 인 메소드를 나타냄@DisplayName
– 테스트 클래스 또는 테스트 메서드에 대한 사용자 지정 표시 이름을 정의@Nested
– 주석이 달린 클래스가 중첩 된 비 정적 테스트 클래스임을 나타냄@Tag
– 테스트 필터링을위한 태그 선언@ExtendWith
– 사용자 지정 확장을 등록하는 데 사용@BeforeEach
– 주석이 달린 메소드가 각 테스트 메소드 이전에 실행됨을 나타냄 (이전 @Before )@AfterEach
– 각 테스트 메서드 (이전에는 @After
) 후에 주석이 추가 된 메서드가 실행됨을 나타냄@BeforeAll
– 주석이 추가 된 메서드가 현재 클래스의 모든 테스트 메서드보다 먼저 실행됨을 나타냄 (이전 @BeforeClass
)@AfterAll
– 현재 클래스 (이전의 @AfterClass
)의 모든 테스트 메서드 후에 주석이 추가 된 메서드가 실행됨을 나타냄@Disable
– 테스트 클래스 또는 메서드를 비활성화하는 데 사용됨 (이전에는 @Ignore
).@ParameterizedTest
: 여러개의 테스트 데이터를 매개변수 형태로 간편하게 사용 가능NullSource
, ValueSource
, EmptySource
, CsvSource
, EnumSource
, MethodSource
등 최소 하나의 소스 어노테이션이 필요ex)
import org.junit.jupiter.api.*;
public class JUnit5Test {
@BeforeAll
static void beforeAll() {
System.out.println("BeforeAll Test");
}
@BeforeEach
static void beforeEach(){
System.out.println("BeforeEach");
}
@Test
@DisplayName("테스트 1☆")
static void testing() {
System.out.println("testing");
}
@AfterEach
static void afterEach() {
System.out.println("AfterEach");
}
@AfterAll
static void afterAll() {
System.out.println("AfterAll");
}
//DisplayName을 이용한 테스트 이름 작성
@Test
@DisplayName("테스트 1☆")
static void testing() {
System.out.println("testing");
}
//Nested를 이용한 계층 구조 테스트
@Nested
@DisplayName("people")
class People {
@Nested
@DisplayName("man")
class Man {
@Test
static void manTest() {
System.out.println("man");
}
}
@Nested
@DisplayName("woman")
class Woman {
@Test
static void womanTest() {
System.out.println("woman");
}
}
}
//ParameterizedTest를 이용한 매개변수이용
@ParameterizedTest
@ValueSource(ints = {1,2,3,4,5})
static void isOdd(int num){
assertTrue(Numbers.isOdd(num));
}
JUnit 5 플랫폼에서 JUnit 3 및 JUnit 4 기반 테스트 실행을 지원한다.
@ExtendWith
, @RegisterExtension
, Java ServiceLoader
assertThrows
, assertEquals
, assertTimeout
, assertNotNull
등assertAll(
() -> assertNotNull(),
() -> assertEquals(),
() -> assertTrue(),
() -> assertTimeout()
);
참조