반응형
Assertion
실제 테스트에서 검증하고자 하는 내용을 확인하는 기능
org.junit.jupiter.api.Assertions.*
Method
메소드명 | 설명 |
fail | 무조건 실패 |
assertTrue | 조건이 True 이면 성공 |
assertFalse | 조건이 False 이면 성공 |
assertNull | 조건이 Null 이면 성공 |
assertNotNull | 조건이 Not Null 이면 성공 |
assertEquals | 기대값(expected) 와 실제값(actual)이 동일하면 성공 |
assertArrayEquals | 두 Array가 동일하면 성공 |
assertIterableEquals | 두 Iterable이 동일하면 성공 |
assertLinesMatch | 두 Stream이 동일하면 성공 |
assertNotEquals | 기대값(expected) 와 실제값(actual)이 같지 않으면 성공 |
assertSame | 동일한 Object면 성공 |
assertNotSame | 동일하지 않은 Object면 성공 |
assertAll | 여러 Assertion이 True면 성공 |
assertThrows | 예상한 에러가 발생하면 성공 |
assertDoesNotThrow | 에러가 발생하지 않으면 성공 |
assertTimeout | 테스트가 지정한 시간보다 오래 걸리지 않으면 성공, 지정한 시간보다 오래걸려도 테스트가 끝날때까지 대기 |
assertTimeoutPreemptively | 테스트가 지정한 시간보다 오래 걸리지 않으면 성공, 지정한 시간보다 오래걸린 경우 바로 테스트 종료 |
Example
- assert
- message
public class Study {
@Test
void setCalculator{
assertEquals(3, calculator.add(1,1));
assertEquals(3, calculator.add(1,1), "계산 결과가 일치하지 않는다."); // 검증 실패 시 메시지 설정
assertEquals(3, calculator.add(1,1), () -> "계산 결과가 일치하지 않는다."); // 검증 실패 시 람다식 함수 사용하여 메시지 설정
assertEquals(3, calculator.add(1,1), new Supplier<String>(){ // 검증 실패 시 Supplier 사용하여 메시지 설정
@Override
public String get() {
return "계산 결과가 일치하지 않는다.";
}
});
}
}
- assertEquals
- assertThrows
public class Study {
@Test
void setCalculator {
assertEquals(3, calculator.add(1,1));
assertThrows(ArithmeticException.class, () -> calculator.divide(1,1));
}
}
- assertAll
public class Study {
@Test
void setCalculator{
assertAll(
() -> assertEquals(3, calculator.add(1,1)),
() -> assertThrows(ArithmeticException.class, () -> calculator.divide(1,1))
);
}
}
- assertTimeout
public class Study {
@Test
void setCalculator{
assertTimeout(Duration.ofMillis(100), () -> {
// 이 code block은 100ms 이상이 걸린다. => block 로직 종료된 후 fail
Thread.sleep(300);
});
}
}
- assertTimeoutPreemptively
public class Study {
@Test
void setCalculator{
assertTimeoutPreemptively(Duration.ofMillis(100), () -> {
// 이 code block은 100ms 이상이 걸린다. => 100ms 지나면 즉시 fail
Thread.sleep(300);
});
}
}
Assumption
검증 조건에 따라 그 뒤의 테스트 실행 여부 설정
org.junit.jupiter.api.Assuptions.*
Example (코드 실행 방식)
- assumeTrue (조건)
public class Study {
private String env = "local";
@Test
void setCalculator {
assumeTrue("dev".equalsIgnoreCase(env)); // true가 아니면 @Disabled
assertEquals(3, calculator.add(1,1))
}
}
- assuption message
public class Study {
private String env = "local";
@Test
void setCalculator {
assumeTrue("dev".equalsIgnoreCase(env),
() -> "Aborting test: not on developer workstation");
assertEquals(3, calculator.add(1,1))
}
}
- assumingThat (조건, 테스트)
public class Study {
private String env = "local";
@Test
void setCalculator {
assumingThat(env.equalsIgnoreCase("dev"), () -> {
System.out.println("dev environment");
assertEquals(3, calculator.add(1,1));
});
System.out.println("local environment");
assertEquals(2, calculator.add(1,1));
}
}
Example (Annotation 실행 방식)
- @Enabled_, @Disabled
@Enabled_ | @Disabled_ | |
OnOs | @EnabledOnOs | @DisabledOnOs |
OnJre | @EnabledOnJre | @DisabledOnJre |
IfSystemProperty | @EnabledIfSystemProperty | @DisabledIfSystemProperty |
IfEnvironmenttVariable | @EnabledIfEnvironmenttVariable | @DisabledIfEnvironmenttVariable |
If | @EnabledIf | @DisabledIf |
public class Study {
@Test
@EnabledIfEnviromentVariable(named="TEST_ENV", matches="LOCAL")
void setCalculator_1 {
assertEquals(2, calculator.add(1,1));
}
@Test
@EnabledOnOS(OS.MAC, OS.LINUX) // OS가 MAC이거나 LINUX인 경우만 테스트를 실행한다
void setCalculator_2 {
assertEquals(2, calculator.add(1,1));
}
@Test
@DisabledOnOS(OS.MAC) // OS가 MAC인 경우는 테스트를 실행하지 않는다.
void setCalculator_3 {
assertEquals(2, calculator.add(1,1));
}
}
728x90
반응형
'JVM > JUnit' 카테고리의 다른 글
[JUnit] 소개 - 6. MockMVC 란 ? (0) | 2023.09.30 |
---|---|
[JUnit] 소개 - 5. BDDMockito 란? (0) | 2023.09.27 |
[JUnit] 소개 - 4. Mokitio 란 ? (1) | 2023.09.26 |
[JUnit] 소개 - 3. Annotation (TestInstance, TestMethodOrder, Tag) (0) | 2023.09.21 |
[JUnit] 소개 - 1. 테스트 종류와 JUnit 이란 (0) | 2022.11.01 |
댓글