티스토리 뷰
■ 기본적인 @BeforeEach > @Test > @AfterEach 순의 코드수행 흐름
■ assertThat().isEqualTo()
(물론 @Test 메소드가 여러개라면, 각 @Test 메소드 전후로 @Before/AfterEach 메소드가 중복 수행됨)
public class CalculatorTest {
StringCalculator stringCalculator;
@BeforeEach
void setUp() {
stringCalculator = new StringCalculator();
}
@Test
void 복합_계산() {
assertThat(stringCalculator.calculate("5 * 2 + 2")).isEqualTo(12);
assertThat(stringCalculator.calculate("12 + 3 * 2")).isEqualTo(30);
assertThat(stringCalculator.calculate("100 / 25 + 5")).isEqualTo(9);
}
@AfterEach
void tearDown() {
stringCalculator = null;
}
}
■ assertThat().isInstanceOfAny(), isExactlyInstanceOf
객체를 @equals()와 @hashcode()를 overriding해서 isEqualTo로 완전히 같은지 비교해도 되지만,
단순히 클래스 확인이라면 이 방법도 사용가능
@Test
void constructor_normal() {
assertThat(new Money("1000")).isInstanceOfAny(Money.class);
}
■ assertThat().isTrue() / isFalse()
public class ValidatorTest {
@Test
void 정상_통과() {
assertThat(Validator.isValid("10 + 2 / 6")).isTrue();
}
@Test
void 정규식_통과_실패() {
assertThat(Validator.isRightFormat("+ 3 + 3")).isFalse();
assertThat(Validator.isRightFormat("10 + * 5")).isFalse();
assertThat(Validator.isRightFormat("10 ^ 2")).isFalse();
assertThat(Validator.isRightFormat("2")).isFalse();
}
}
■ assertThrows()를 통한 예외처리
public class RacingTest {
List<Car> cars;
@BeforeEach
void setUp() {
cars = new ArrayList<>();
cars.add(new Car("pobi"));
cars.add(new Car("sean"));
}
@Test
void 차량이름_중복() {
cars.add(new Car("pobi"));
assertThrows(IllegalArgumentException.class, () -> {
new Racing(cars, 3);
});
}
}
■ assertThatIllegalArgumentException().isThrownBy()를 통한 예외처리
@Test
void constructor_with_character() {
assertThatIllegalArgumentException().isThrownBy(() -> {
new Money("abc");
});
}
■ assertThat().containsExactly() / containsExactlyInAnyOrder()
public class WinnerTest {
@Test
void 우승자_선정() {
List<Car> cars = Arrays.asList(
new Car("pobi", 3), new Car("sean", 2)
, new Car("denis", 3), new Car("ms", 1));
Winner winner = new Winner(cars);
assertThat(winner.getWinners()).containsExactlyInAnyOrder("pobi", "denis");
}
}
JUnit 5 Tutorial: Writing Assertions With AssertJ
■ 다음과 같이 정밀도를 지정할 수 있다.
junit : assertEquals(1.414, line.length(), 0.001);
assertj : assertThat(line.length()).isEqualTo(1.414, offset(0.00099));
'General, Java' 카테고리의 다른 글
Java) package, class/instance (0) | 2019.09.14 |
---|---|
Java) enum을 활용해 if문 없애기 (with Calculator 예제) (0) | 2019.09.14 |
Java Project에서 main()의 위치에 대해 (0) | 2019.09.14 |
Java) Thread간 실행순서 with Sleep() (0) | 2019.09.14 |
Java) C와의 차이점, Java에서 주의할점 (0) | 2019.09.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- webhacking.kr
- dfs
- Android
- 프로그래머스
- 우아한 테크코스
- 개발자
- Android Studio
- bfs
- mysql
- Algorithm
- Stack
- 회고
- brute-force
- javascript
- 리버싱
- JPA
- 웹해킹
- Vo
- sort
- graph
- git
- FRAGMENT
- reversing
- Java
- 해외여행
- socket
- Data Structure
- queue
- OneToMany
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함