특정 소스코드의 모듈이 의도한 대로 작동하는지 검증하는 테스트이다.
즉, 함수 및 메소드에 대한 테스트를 하는 작업.
Spring에서 단위테스트를 하는것은 스프링 커네이너에 올라와있는 Bean들을 테스트 하는 것이다.
Junit을 사용하면 스프링 컨테이너를 띄워, 그 위에 올라가있는 Bean을 테스트 할 수 있다.
@Test
@Before
@After
@Ignore
src/test/java
이하에 테스트 패키지를 생성후, 테스트 클래스 생성.
테스트 메소드 작성.
스프링 컨테이너 객체 생성, 빈 의존성 주입 작업 후, 테스트할 메소드를 호출한 리턴값을 assert()로 검사한다.
(system out으로 console에 찍어볼수도 있겠다)
// 기존
public class Calculator {
public int sum(int num1, int num2) {
return num1 + num2;
}
}
// 테스트 코드
class CalculatorTest {
@Test
void testSum(){
Calculator calculator = new Calculator();
assertEquals(6, calculator.sum(1,2));
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"파일경로"})
@Autowired
assertEquals(x, y)
assertArrayEquals(a, b);
assertFalse(x)
assertTrue(x)
assertTrue(message, condition)
assertNull(o)
assertNotNull(o)
assertSame(ox, oy)
assertNotSame(ox, oy)
assertfail()
요일 ( 월, 화, 수, 목, 금, 토, 일 )
, 계절( 봄, 여름, 가을, 겨울)
등과 같이 몇 가지 한정된 값을 갖는 경우가 흔히 있습니다. 요일, 계절과 같이 한정된 데이터만을 가지는 타입을 Enumeration Type
이라고 하며 열거타입에 들어가는 값( 월, 화 ,수 등 )들
을 열거 상수( Enumeration constant)
라고 합니다._
로 연결하는 것이 관례// enum을 사용하지않고 상수값 정의
public static final String MON = "Monday";
public static final String TUE = "Tuesday";
public static final String WED = "Wednesday";
// enum을 사용해서 상수값 정의
public enum Week {
MONDAY, TUSEDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
// 사용 방법
Week.MONDAY
Rainbow.RED
만약에
public enum Day {
MON, TUE, WED, THU, FRI, SAT, SUN
}
이렇게 되어있는 Enum클래스가 있을 때 각 요일의 풀네임이 필요할 때가 있음
public enum Day {
MON("Monday"),
TUE("Tuesday"),
WED("Wednesday"),
THU("Thursday"),
FRI("Friday"),
SAT("Saturday"),
SUN("Sunday")
;
private final String label;
Day(String label) {
this.label = label;
}
public String label() {
return label;
}
}
enum Rainbow {
RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), INDIGO(-1), VIOLET(-11);
private final int value;
Rainbow(int value) { this.value = value; }
public int getValue() { return value; }
}
Enum 요소에 특정 값을 매핑하고 싶다면 위 코드처럼 필드값을 추가하면 됩니다.
여기서는 label 이라는 String 값을 추가했습니다.
필드값을 추가하면 생성자도 함께 추가해야하는데 Enum 클래스는 생성자가 있다고 하더라도 new 연산으로 생성할 수 없습니다.
System.out.println(Day.MON.name()); // MON
System.out.println(Day.MON.label()); // Monday
이렇게 규칙이 존재하는 특정 요소들을 하나의 Enum 클래스로 묶어두면 가독성도 좋아지고 if 문으로 일일히 검사할 필요도 없어서 편리합니다.
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum01 {
public static void main(String[] args) {
Rainbow[] arr = Rainbow.values();
for (Rainbow rb : arr) {
System.out.println(rb);
}
}
}
/*결과
RED
ORANGE
YELLOW
GREEN
BLUE
INDIGO
VIOLET
*/
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum02 {
public static void main(String[] args) {
Rainbow rb = Rainbow.valueOf("GREEN");
System.out.println(rb);
}
}
//결과 GREEN
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum03 {
public static void main(String[] args) {
int idx = Rainbow.YELLOW.ordinal();
System.out.println(idx);
}
}
//결과 2