java

[210620] junit Assertions - Method

hjk927 2021. 6. 20. 03:11

 

org.junit.jupiter.api.Assertions


Assertions에는 JUnit 테스트를 위한 메소드가 있다. 테스트를 할 때 상태를 확인하기 위한 메소드를 제공한다. 

 

 

Method


assertAll(Executable... excutables)

모든 표현식을 수행하고, 에러를 발생시키지 않는지 확인한다. 

    @Test
    public void assertAllTest(){
        Assertions.assertAll(()->{
            System.out.println("first");
        }, ()->{
            System.out.println("second");
        }, ()->{
            System.out.println("third");
        });
    }

 

assertArrayEquals(Object[] expected, Object[] actual)

두 객체의 값이 같은 지 확인한다. 

    @Test
    public void assertArrayEqualsTest(){
        int[] expected = {1, 2, 3};
        int[] actual = {1, 2, 3};

        Assertions.assertArrayEquals(expected, actual);
    }

 

assertEquals(Object expected, Object actual)

두 객체가 저장하는 값이 같은지 확인한다. 

assertNotEquals(Object expected, Object actual)

두 객체가 저장하는 값이 같지 않은지 확인한다. 

    public static class Person{
        String name;
        int age;

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            Person person = (Person) o;

            if (age != person.age) return false;
            return name != null ? name.equals(person.name) : person.name == null;
        }
    }

    @Test
    public void assertEqualsTest(){
        Person expectedPerson = new Person("James", 20);
        Person actualPerson = new Person("James", 20);

        Assertions.assertEquals(expectedPerson, actualPerson);
    }

    @Test
    public void assertNotEqualsTest(){
        Person expectedPerson = new Person("James", 20);
        Person actualPerson = new Person("James", 30);

        Assertions.assertNotEquals(expectedPerson, actualPerson);
    }

 

assertNotNull(Object actual)

객체가 null이 아닌지 확인한다. 

    @Test
    public void assertNotNullTest(){
        Person person = new Person("James", 20);

        Assertions.assertNotNull(person);
    }

 

assertSame(Object expected, Object actual)

두 객체가 실제로 같은 객체인지 확인한다. 

    @Test
    public void assertSameTest(){
        Person expectedPerson = new Person("James", 20);
        Person actualPerson = expectedPerson;

        Assertions.assertSame(expectedPerson, actualPerson);
    }

 

assertNotSame(Object expected, Object actual)

두 객체가 다른 객체인지 확인한다. 

    @Test
    public void assertNotSameTest(){
        Person expectedPerson = new Person("James", 20);
        Person actualPerson = new Person("James", 20);

        Assertions.assertNotSame(expectedPerson, actualPerson);
    }

 

assertThrows(Class<T> expectedType, Executable executable)

표현식을 수행했을 때 주어진 에러가 발생하는지 확인한다. 

    @Test
    public void assertThrowsExceptionTest() {
        Assertions.assertThrows(IndexOutOfBoundsException.class, ()->{
            int[] arr = {1, 2, 3, 5};
            arr[5] = 0;});
    }

 

assertTimeout(Duration timeout, Executable executable)

표현식이 주어진 시간 안에 수행되는지 확인한다. 

    @Test
    public void assertTimeOutTest() {
        Assertions.assertTimeout(Duration.ofMinutes(3), ()->{
            int sum = 0;

            for(int i = 0 ; i < 500000 ; i++){
                sum += i;
            }

            System.out.println(sum);
        });
    }

 

assertTrue(boolean condition)

매개변수로 받은 조건문이 true인지 확인한다. 

    @Test
    public void assertTrueTest(){
        Assertions.assertTrue(2==2);
    }

 

assertFalse(boolean condition)

매개변수로 받은 조건문이 false인지 확인한다. 

    @Test
    public void assertFalseTest(){
        Assertions.assertFalse(2==3);
    }

 

fail(String message)

테스트를 강제로 실패 상태로 만들 때 사용한다. 호출 시 매개변수로 받은 메시지를 출력한다. 

    @Test
    public void failTest(){
        for(int i = 0 ; i < 5 ; i++){
            System.out.println(i);
            if(i == 3) {
                Assertions.fail("이 테스트는 실패합니다.");
            }
        }
    }

Output

fail test를 제외하고는 모두 통과한다. 

 

Assertions 클래스의 메소드는 테스트를 할 때 유용하게 사용할 수 있다. 

 

 

- Reference

https://junit.org/junit5/docs/5.0.1/api/org/junit/jupiter/api/Assertions.html#assertAll-org.junit.jupiter.api.function.Executable...-

https://howtodoinjava.com/junit5/junit-5-assertions-examples/