[스프링] 스프링 EL 테스트 방법

스프링 프레임워크는 다양한 기능을 제공하는데, 그 중 EL(Expression Language) 역시 유용한 기능 중 하나입니다. EL은 JSP, JSF, Struts 등에서 사용되어왔으며 스프링에서도 마찬가지로 사용할 수 있습니다. EL을 사용하면 속성 값을 쉽게 참조하고 조작할 수 있어서 매우 편리합니다.

EL을 사용한 코드를 테스트하려면 다음과 같은 방법을 사용할 수 있습니다.

1. StandardEvaluationContext 클래스 사용

StandardEvaluationContext 클래스를 사용하여 EL 표현식을 평가할 수 있습니다. 아래는 StandardEvaluationContext를 사용한 간단한 예제 코드입니다.

import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

public class EvaluatorExample {
    public static void main(String[] args) {
        SpelExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        
        context.setVariable("name", "Spring");

        String expression = "#name + ' Framework'";
        String result = parser.parseExpression(expression).getValue(context, String.class);

        System.out.println(result);  // 출력: Spring Framework
    }
}

위 코드에서는 StandardEvaluationContext를 사용하여 EL 표현식 #name + ' Framework'을 평가했습니다. context.setVariable 메서드로 변수를 설정하고, parser.parseExpression 메서드로 EL 표현식을 파싱하여 값을 얻을 수 있습니다.

2. 스프링 컨테이너를 이용한 테스트

때로는 스프링 컨테이너를 이용하여 EL을 테스트하는 것이 더 효율적일 수 있습니다. 아래는 스프링 컨테이너를 이용한 EL 표현식 테스트의 예제 코드입니다.

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class SpringELTest {

    @Autowired
    private ApplicationContext applicationContext;

    @Test
    public void testSpringEL() {
        String value = applicationContext.getBean("myBean", MyBean.class).getValue();
        assertEquals("Hello, Spring!", value);
    }
}

위 코드는 SpringELTest 클래스에서 ApplicationContext를 사용하여 빈에 정의된 EL 표현식을 평가하는 간단한 테스트를 보여줍니다. @SpringBootTest 어노테이션을 사용하여 스프링 애플리케이션 컨텍스트를 로드하고, @Autowired를 사용하여 필요한 빈을 주입합니다.

EL 표현식을 테스트하는 두 가지 방법에 대해 알아보았습니다. EL은 스프링 애플리케이션에서 중요한 요소이므로, 테스트 코드 작성 시 유용하게 활용할 수 있습니다.

이상으로 EL을 사용한 스프링 코드를 테스트하는 방법에 대해 알아보았습니다. 감사합니다.

스프링 EL 공식 문서