環境設定(ライブラリ準備)
下記の外部ライブラリを追加します
build.gradle
dependencies {
/* ~~~~~~~~~ */
testAnnotationProcessor "org.projectlombok:lombok"
testCompileOnly "org.projectlombok:lombok"
testImplementation "org.springframework.boot:spring-boot-starter-test"
testImplementation "org.springframework.boot:spring-boot-starter-data-jdbc"
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
testImplementation 'org.dbunit.dbunit:2.7.3'
testImplementation 'com.github.springtestdbunit:spring-test-dbunit:1.3.0'
//エクセルからテスト用データを生成するために使用
testImplementation 'org.apache.poi:poi:4.1.0'
testImplementation 'org.apache.poi:poi-ooxml:4.1.0'
}
テストパッケージ配下の任意のディレクトリに、DB接続情報の設定クラスを追加します
DatabaseConfig.java
package config;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import javax.sql.DataSource;
public class DatabaseConfig {
@Bean
public DataSource dataSource(){
return new TransactionAwareDataSourceProxy(
DataSourceBuilder.create()
.username("sa")
.password("")
.url("jdbc:h2:mem:testdb")
.driverClassName("org.h2.Driver")
.build()
);
}
}
テスト用のデータをエクセルファイルにて準備
今回のテーブル定義は下記の通り
CREATE TABLE TEST_TABLE (
ID IDENTITY NOT NULL PRIMARY KEY,
TEXT1 VARCHAR(255) NOT NULL,
TEXT2 VARCHAR(1) NOT NULL
);
DB検索テスト
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ExtendWith(SpringExtension.class)
@Transactional
public class DBUnitTest {
@Autowired
JdbcTemplate jdbcTemplate;
/**
* DB検索テスト
*/
@Test
@DatabaseSetup(value = "/testdata/テストデータ.xlsx", type = DatabaseOperation.INSERT)
void DB検索テスト(){
List<dept> list = jdbcTemplate.query("SELECT * FROM TEST_TABLE", new BeanPropertyRowMapper<dept>(dept.class));
assertEquals("3", list.size());
}
}