JUnitπ
Java μΈμ΄λ₯Ό μν λ¨μ ν μ€νΈ νλ μμν¬ μ€ νλλ‘, μννΈμ¨μ΄μ κ° λΆλΆμ΄ μλν λλ‘ μλνλμ§λ₯Ό νμΈνλ λ° μ¬μ©λλ€.
λ¨μ ν μ€νΈ(μ€μ ν μ€νΈ)π
λ¨μν μ€νΈλ κ°κ°μ λ©μλ λλ κΈ°λ₯μ΄ μλν λλ‘ μλνλμ§ νμΈν¨μΌλ‘μ¨ μ½λμ μ λ’°μ±μ ν보ν μ μλ€. λν, μ½λκ° μμλλ‘ λμν¨μ νμΈνλ©΄ κ°λ°μλ€μ μμ μ μ΄κ³ νμ μ κ°μ§κ³ μ½λλ₯Ό μμ νκ³ νμ₯ν μ μλ€.
μ 무 νμ μμλ λ°λμ μμ μ μ½λλ₯Ό ν μ€νΈλ₯Ό κ±°μΉκ³ 곡μ νλ€.
λ§μ½ κ²μ¦μ νμ§μκ³ μλ¬κ° λ°μνλ€λ©΄ νμΈν΄μΌν κ³³μ΄ λ무 λ§μ νλ€μ΄μ§λ―λ‘ λ¨μν μ€νΈλ₯Ό ν΅ν΄ μλ¬κ° λ°μνμ§ μλ λ²μλ₯Ό λλ €κ°λ©°, μμ μ±μ ν보νλ€.
- νμΌ κ΅¬μ±
μμν΄λ | ν¨ν€μ§ | νμΌλͺ |
src/test/java | ||
com.test.java.db | ||
JDBCTest.java | ||
HikariCPTest.java | ||
MyBatisTest.java | ||
src/main/resources | ||
mapper | ||
rest.xml |
1. JDBC μ°κ²° ν μ€νΈ
JDBCTest.java
ν μ€νΈ μΌμ΄μ€λ JUnitμμ μ€ν κ°λ₯ν ν μ€νΈμ μ΅μ λ¨μλ₯Ό λνλΈλ€. κ° ν μ€νΈ μΌμ΄μ€(λ©μλ)λ @Test μ΄λ Έν μ΄μ μ μ¬μ©νλ€.
package com.test.java.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
public class JDBCTest {
@Test
public void testConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "java1234");
assertNotNull(conn);
assertEquals("DB μ°κ²°", false, conn.isClosed());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Class.forName
DBC λλΌμ΄λ²λ νΉμ λ°μ΄ν°λ² μ΄μ€μμ μ°κ²°μ μ§μνλ λΌμ΄λΈλ¬λ¦¬μ΄λ©°, Class.forNameμΌλ‘ Oracle JDBC λλΌμ΄λ²λ₯Ό λ‘λνλ€.
DriverManager.getConnection
JDBC λλΌμ΄λ²λ₯Ό μ¬μ©νμ¬ Oracle λ°μ΄ν°λ² μ΄μ€μ μ°κ²°νλ€.
assertNotNull, assertEqualsμ JUnit νλ μμν¬μμ ν
μ€νΈ κ²°κ³Όλ₯Ό νλ³νλ μ΄μ€μ
(assertion) λ©μλ μ€ μΌλΆμ΄λ€.
assertNotNull()
νΉμ κ°μ²΄κ° nullμ΄ μλμ νμΈνλ€. μ¦, μΈμλ‘ μ λ¬λ κ°μ²΄κ° nullμ΄ μλλΌλ©΄ ν
μ€νΈκ° μ±κ³΅νκ³ , κ·Έλ μ§ μμΌλ©΄ ν
μ€νΈλ₯Ό μ€ν¨λ‘ λ°ννλ€.
assertEquals()
λ κ°μ΄ λμΌνμ§ λΉκ΅νλ€. μμ κ°κ³Ό μ€μ κ°μ΄ κ°μΌλ©΄ ν
μ€νΈκ° μ±κ³΅νκ³ , κ·Έλ μ§ μμΌλ©΄ ν
μ€νΈλ₯Ό μ€ν¨λ‘ λ°ννλ€.
μ€ννκΈ°(Ctrl + F11)
JUnit Testλ‘ μ€ν
2. HirkariCP κ΅¬μΆ ν μ€νΈ
μ§μ Connectionμ μμ±νμ§ μκ³ Connection Poolμ ν΅ν΄ Connectionμ΄ μ μμ±λλμ§ ν μ€νΈνλ€.
HikariCPTest.java
package com.test.java.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.sql.Connection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.zaxxer.hikari.HikariDataSource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class HikariCPTest {
@Autowired
private HikariDataSource dataSource;
@Test
public void testConnectionPool() {
assertNotNull(dataSource);
try {
Connection conn = dataSource.getConnection();
assertEquals(false, conn.isClosed());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@RunWith(SpringJUnit4ClassRunner.class)
JUnit ν
μ€νΈκ° μ€νλ λ Springμ ν
μ€νΈ μ§μμ νμ±ννλ€. SpringJUnit4ClassRunnerλ Spring TestContext Frameworkλ₯Ό νμ©νμ¬ ν
μ€νΈλ₯Ό μ€ννλ€.
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@ContextConfigurationμ μ€μ νμΌμ λ‘λνλ€.
web.xmlμλ root-context.xmlκ³Ό servlet-context.xml μ΄ μ μΈλμλ€.
web.xmlμ μλ²κ° μ€νλ λ ν°μΊ£μ΄ μλμ μ€ννλ©΄μ μ μΈλ root-context.xmlκ³Ό servlet-context.xmlλ₯Ό νΈμΆνλ€. κ·Έλμ μ°λ¦¬κ° λ°λ‘ νΈμΆνμ§ μμλ μ€νμ΄ λμλ κ²μ΄λ€.
root-context.xmlμλ hikariCPκ° μ€μ λμ΄ μλ€. κ·Έλμ μ΄ ν μ€νΈμμλ root-context.xml νμΌμ λ‘λνμ¬ μ€μ μ΄ μ λμ΄μλμ§ νμΈνλ€.
νμ§λ§ junitμ μ€νλ§ κΈ°μ μ΄ μλ μλ° κΈ°μ μ΄κΈ°μ @RunWith, @ContextConfiguration μ΄λ Έν μ΄μ μ λμμ λ°μ, μ€νλ§μ μ€ν νμ λμ²λΌ beanμ μ½μ μ μλ μνκ° λλ€.
μΈμ€ν΄μ€ μμμ μλμ νκ² λλ©΄ dataSource 컀λ₯μ μ κ΄λ¦¬νλ κ°μ²΄λ‘ λκ³ μλ connection poolμ λμ¬ν΄μ€λ€.
3. MyBatis κ΅¬μΆ ν μ€νΈ
쿼리λ₯Ό μ μ‘νλ €λ©΄ SqlSessionTemplate νμνμ¬ @RunWith, @ContextConfiguration μ΄λ Έν μ΄μ μ λΆμ¬ μ½μ μ μλλ‘ νλ€.
쿼리 ν μ€νΈλ₯Ό μν rest.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="rest">
<select id="test" resultType="Integer">
select count(*) from tblAddress
</select>
</mapper>
MyBatisTest.java
package com.test.java.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class MyBatisTest {
@Autowired
private SqlSessionTemplate template;
@Test
public void testQuery() {
int count = template.selectOne("rest.test");
assertNotNull(template);
assertEquals(count, count); //countμ select count(*) from tblAddress λ€μ΄μμΌ μ±κ³΅
}
}
'Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Spring] MyBatis μ Spring μ°λνκΈ°(3) : Interface Mapperλ₯Ό μ¬μ©ν μ°λ (0) | 2023.12.01 |
---|---|
[Spring] REST API Sever κ΅¬μΆ (0) | 2023.11.30 |
[Spring] Spring AOP : @Aspect μ¬μ©νκΈ° (0) | 2023.11.29 |
[Spring] Apache Commons IO λΌμ΄λΈλ¬λ¦¬(2) : λ€μ€ file μ μΆλ ₯ (0) | 2023.11.29 |
[Spring] Apache Commons IO λΌμ΄λΈλ¬λ¦¬(1) : file μ μΆλ ₯ (0) | 2023.11.29 |