JUnit - Assert Methods(2)

원태연·2022년 5월 30일
0

JUnit

목록 보기
4/5
post-thumbnail
post-custom-banner

assertTrue()

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

assertNull

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

assertTimeout

import org.junit.jupiter.api.Assertions;

static void assertTimeout(Duration timeout, Executable executable, String message?)
// ?는 옵셔널
  • timeout : 주어진 시간
  • executable : 실행할 assert문

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메서드가 존재한다.

assertTimeoutPreemptively

import org.junit.jupiter.api.Assertions;

static void assertTimeoutPreemptively(Duration timeout, Executable executable, String message?)
//?는 옵셔널  

assertTimeoutPreemptivelyasssertTimeout과 기능은 동일하지만, 다른 과정을 거치는 덕분에 아래 코드의 테스트 결과를 100ms만에 알 수 있다.

@Test
public void Test_2(){
  assertTimeoutPreemptively(ofMillis(100), () -> {
    Thread.sleep(10000);
  });
}
//FAIL

assertThrows

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
profile
앞으로 넘어지기
post-custom-banner

0개의 댓글