코딩하는 문과생

[Spring] Spring 프레임워크(5) - Spring Test 본문

웹 프로그래밍/Spring

[Spring] Spring 프레임워크(5) - Spring Test

코딩하는 문과생 2020. 3. 9. 14:51

[JUnit4: 단위테스트 수행]

  • 단위테스트를 지원해주는 프레임워크

  • 단정메서드로 테스트 케이스 수행 결과를 판별 ex. assertEquals

  • 테스트 지원하는 어노테이션 ex. @Text, @Before, @After

  • @Test메서드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어진다.

-어노테이션

@Test: 해당 메소드가 테스트 단위이다. 다른 테스트와 독립적으로 실행된다.

@Ignore: 테스트 실행x

@Before, @After: 단위 테스트 수행전,후 공통적으로 실행되어야 하는 부분 

@BeforeClass, @AfterClass: 모든 단위 테스트 시작과 전

 

 

-단정(assert) 메서드

assertEquals(a, b), assertArrayEquals(a, b) : 객체 a,b가 일치한지 확인

assertTrue(a): 조건 A가 참인가 확인

 

[spring-test: 자동으로 스프링 컨테이너 로딩]

-어노테이션

@RunWith(SpringJUnit4ClassRunner.class): 스프링 테스트하기 수월해짐

@ContextConfiguration: 스프링 빈 설정파일의 위치를 지정할 때 사용

@Autowired: 빈을 테스트

 

 

ex. 테스트, ArticleDAO의 메소드를 테스트할 예정

-ArticleDAO.java

@Repository
public class ArticleDAO {
	
	public void insertArticle(Article article) {
		System.out.println(article);
	}

	public Article selectArticleById(String articleId) {
		Article article = new Article(10, "sijune", "test", "test,test");
		return article;
	}
}

-pom.xml 의존성 추가

	<!-- https://mvnrepository.com/artifact/junit/junit -->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.12</version>
	    <scope>test</scope>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-test</artifactId>
	    <version>4.3.9.RELEASE</version>
	    <scope>test</scope>
	</dependency>

-ArticleDAOTest.java

@WebAppConfiguration
public class ArticleDAOTest {
	
	private ApplicationContext ctx;
	
	@Before
	public void setup() {
		ctx = new FileSystemXmlApplicationContext(
				"file:src/main/webapp/WEB-INF/spring/*.xml");
	}
	
	@Test
	public void testSelectArticleById() {
		ArticleDAO dao = ctx.getBean("articleDAO", ArticleDAO.class);
		Article article = dao.selectArticleById(null);
		Assert.assertTrue(article.getAuthor().equals("sijune"));
	}
	
}

-ArticleDAOTest.java 수정

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/servlet-context.xml")
@WebAppConfiguration
public class ArticleDAOTest {
	
	@Autowired
	private ArticleDAO dao;
	
	@Test
	@Ignore
	public void testInsertArticle() {
		dao.insertArticle(null);
	}
	
	@Test
	public void testSelectArticleById() {
		Article article = dao.selectArticleById(null);
		Assert.assertTrue(article.getAuthor().equals("sijune"));
	}
	
}

아래 창에서 확인 가능