2019백업

5) Spring Test와 Junit

728x90

Sprint-Test에서 테스트를 지원하는 어노테이션

  @RunWith(SpringJUnit4ClassRunner.class)

    - Junit 프레임워크의 테스트 실행방법을 확장 할 때 사용하는 어노테이션이다.

    - SpringJUnit4ClassRunner 라는 클래스를 지정해주면 jUnit이 테스트를 진행하는 중에              ApplicationContext를 만들고 관리하는 작업을 진행한다.

    - @RunWith는 각각의 테스트 별로 객체가 생성되더라도 싱글톤(Singleton)의 ApplicationContext를 보장한다.

 

  @ContextConfiguration

     - 스프링 빈(Bean) 설정 파일의 위치를 지정할 때 사용되는 어노테이션이다.

 

  @Autowired

     - 스프링 DI에서 사용되는 특별한 어노테이션이다.

     - 해당 변수에 자동으로 빈을 매핑 해준다.

     - 스프링 빈 설정 파일을 읽기 위해 굳이 GenericXmlApplicationContext를 사용할 필요가 없다.

 

  예시코드

  1.  Sprint-Test

...더보기

 

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.ContextConfiguration;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;

import myspring.di.xml.Hello;
import myspring.di.xml.Printer;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:config/beans.xml")
public class HelloBeanSpringTset {
@Autowired
private ApplicationContext context;

// @Before
// public void init() {
// //ioc 컨테이너 생성
// context = new GenericXmlApplicationContext("config/beans.xml");
// }

@Test
public void bean1() {
//2.getBean() 호출
Hello hello = (Hello) context.getBean("hello");
assertEquals("HelloSpring",hello.sayHello());
hello.print();

Printer printer = (Printer) context.getBean("printer");
assertEquals("Hello pring", printer.toString());
}
@Test
public void bean2() {
Printer printer = (Printer) context.getBean("printer");
Printer printer2 = context.getBean("printer",Printer.class);

assertSame(printer,printer2);
}

}

  2. JUnit

...더보기
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

import myspring.di.xml.Hello;
import myspring.di.xml.Printer;

public class HelloBeanTest {
public static void main(String[] args) {

// ioc 컨테이너 생성
ApplicationContext context = new GenericXmlApplicationContext("/config/beans.xml");
// src부터가 절대 경로로 기본 으로 설정 되어있다.

// 2.Hello Bean 가져오기 Hello hello = (Hello) context.getBean("hello");
Hello hello = (Hello) context.getBean("hello");
System.out.println(hello.sayHello());
hello.print();

// 3.SpringPrinter Bean 가져오기 Printer printer = (Printer)
Printer printer = (Printer) context.getBean("printer");
System.out.println(printer.toString());

Hello hello2 = context.getBean("hello", Hello.class);
// Behaves the same as
// getBean(String), but provides a measure of type safety by throwing a
// BeanNotOfRequiredTypeException if the bean is not of the required type.
// hello2.print();

// true가 나온다는 것은 sigleton 패턴이다. System.out.println(hello == hello2);

}
}

 

 

Junit @RunWith @ContextConfiguration @SpringApplicationConfiguration

출처) https://countryxide.tistory.com/17

반응형