import org.junit.jupiter.api.Assertions;
assertTrue(boolean condition, String message?)
//?는 옵셔널
condition :
condition이 true
인 경우 테스트 통과
message :
테스트 결과가 실패일 때, 화면에 출력될 메시지
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class PlayGround {
@Test
public void Test_1() {
int a = 1;
int b = 2;
Assertions.assertTrue(a < b);
}
}
//PASS
assertFalse()도 동일하게 작동
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class PlayGround { @Test public void Test_1() { int a = 1; int b = 2; Assertions.assertFalse(a > b); } } //PASS
import org.junit.jupiter.api.Assertions;
assertNull(Object actual, String message)
actual :
actual이 null
인지 확인
message :
테스트 결과가 실패일 때, 화면에 출력될 메시지
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class PlayGround {
@Test
public void Test_1() {
Integer a = null;
Assertions.assertNull(a);
}
}
//PASS
assertNotNull()도 동일하게 작동
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class PlayGround { @Test public void Test_1() { Integer a = 10; Assertions.assertNotNull(a); } } //PASS
import org.junit.jupiter.api.Assertions;
static void assertTimeout(Duration timeout, Executable executable, String message?)
// ?는 옵셔널
assertTimeout()
은 주어진 시간안에executable
이 작동하는지 테스트 하는 것.
// 성공 예시
@Test
public void Test_1(){
assertTimeout(ofMinutes(2), () -> {}});
}
//PASS
// 실패 예시
@Test
public void Test_2(){
assertTimeout(ofMillis(10), () -> {
Thread.sleep(100);
});
}
//FAIL
assertTimout()
의 작동을 보면
executable
이 실행되기 전에 시간측정을 시작하고,
executable
이 종료된 시점에 시간을 측정하여
timeout
와 비교하여 테스트 결과를 반환다.
@Test
public void Test_2(){
assertTimeout(ofMillis(1000), () -> {
Thread.sleep(10000);
});
}
//FAIL
이러한 작동과정 때문에, 위 코드의 테스트 결과를 알기 위해선 1000ms가 아닌 10000ms를 기다려야 한다.
이러한 불편함을 보완해주는 또 다른 assert메서드가 존재한다.
import org.junit.jupiter.api.Assertions;
static void assertTimeoutPreemptively(Duration timeout, Executable executable, String message?)
//?는 옵셔널
assertTimeoutPreemptively
는 asssertTimeout
과 기능은 동일하지만, 다른 과정을 거치는 덕분에 아래 코드의 테스트 결과를 100ms만에 알 수 있다.
@Test
public void Test_2(){
assertTimeoutPreemptively(ofMillis(100), () -> {
Thread.sleep(10000);
});
}
//FAIL
static <T extends Throwable> T assertThrows(Class<T> expectedType, Executable executable, String message)
expectType: 예측할 ExceptionType
executable: 실행할 assert문들
@Test
public void Test_1() {
assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
}
//PASS