ããã¯ããªã«ãããããŠæžãããã®ïŒ
以åãDbUnitã䜿ã£ãŠãšã³ããªãŒãæžããŠã¿ãŸããã
ãã®æã«ãå°ãè§ŠããŠããã®ã§ãããä»åã¯Database Riderãšãããã®ã詊ããŠã¿ãããšæããŸãã
Database Rider
Database Riderã¯ãDbUnitãšJUnitãçµ±åããŠããŒã¿ããŒã¹ã®ãã¹ãããããããããã®ã§ãã
Database Rider integrates DBUnit and JUnit in order to make database testing a breeze!
æ©èœãšããŠã¯ã以äžã®ããã§ããã
- ã¢ãããŒã·ã§ã³ã䜿ã£ãŠJUnit Ruleãšçµ±å
- ã€ã³ã¿ãŒã»ãã¿ãŒã«ããCDIçµ±å
- JSONãYAMLãXMLãXLSãCSVããŒã¿ãã©ãŒãããããµããŒã
- ã¢ãããŒã·ã§ã³ãŸãã¯YAMLãã¡ã€ã«ã«ããæ§æ
- Cucumberãšã®çµ±å
- è€æ°ã®ããŒã¿ããŒã¹ã®ãµããŒã
- æ¥ä»ïŒæå»ã®ãµããŒã
- GroovyãJavaScriptã䜿ã£ãã¹ã¯ãªããã§ã®ããŒã¿ã»ããã®ãµããŒã
- æåŸ ããããŒã¿ã»ãããžã®æ£èŠè¡šçŸãµããŒã
- JUnit 5ãšã®çµ±å
- ããŒã¿ã»ããã®ãšã¯ã¹ããŒã
- ã³ãã¯ã·ã§ã³ãªãŒã¯ã®æ€åº
- å€ãã®ãµã³ãã«
ããã¥ã¡ã³ãã¯ã以äžããææ°ã®ãã®ãåç §ããŸãã
çŸæç¹ã§å
¬éãããŠããææ°ã®ããã¥ã¡ã³ãã¯ã1.35.0ã®ããã§ãïŒäžèЧã«ã¯ãããŸããã§ããããURLããããŒãžã§ã³æå®ãããšåç
§
ã§ããŸããïŒã
Getting Startedã¯ãã¡ãã
Database Rider Getting Started
GitHubãªããžããªã¯ãã¡ãã
GitHub - database-rider/database-rider: Database testing made easy!
ãµã³ãã«ã¯ãGitHubãªããžããªã«å«ãŸããŠããŸãã
https://github.com/database-rider/database-rider/tree/1.35.0/rider-examples
以äžã®ãããªãµã³ãã«ããããŸãã
- dbunit-tomee-appcomposer-sample
- jOOQ-DBUnit-flyway-example
- jpa-productivity-boosters
- quarkus-dbunit-sample
- quarkus-postgres-sample
- rider-kotlin
- spring-boot-dbunit-sample
ãšãããããããããã«ããŠã䜿ã£ãŠãã£ãŠã¿ãŸãããã
ãé¡
ä»åã®ãé¡ã¯ã以äžã®ããã«ããŸãã
- Database Riderã䜿ã£ããã¹ããæžã
- ãã¡ã€ã«ã§çšæããããŒã¿ã»ããã«ã¯ãYAMLã䜿çšãã
- ããŒã¿ããŒã¹ã¢ã¯ã»ã¹ã«ã¯Doma 2ã䜿çšãã
- ãã¹ãã£ã³ã°ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãJUnit 5ã䜿çšãã
- ããŒã¿ããŒã¹ã«ã¯MySQL 8.0ã䜿çšãã
åèã«ããããã¥ã¡ã³ãã¯ããŸãã¯Getting Startedã«ããããšæããŸãã
Database Rider Getting Started
ããã¥ã¡ã³ãæ¬äœã®æ¹ããå¿ èŠã«å¿ããŠåç §ããŸãã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã
$ java --version openjdk 17.0.4 2022-07-19 OpenJDK Runtime Environment (build 17.0.4+8-Ubuntu-120.04) OpenJDK 64-Bit Server VM (build 17.0.4+8-Ubuntu-120.04, mixed mode, sharing) $ mvn --version Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 17.0.4, vendor: Private Build, runtime: /usr/lib/jvm/java-17-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "5.4.0-131-generic", arch: "amd64", family: "unix"
MySQLã¯ã172.17.0.2ã§åäœããŠãããã®ãšããŸãã
$ mysql --version mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL) mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.31 | +-----------+ 1 row in set (0.00 sec)
ããŒã¿ããŒã¹ã¯practice
ãã¢ã«ãŠã³ãã¯kazuhira
ïŒpassword
ã§äœæããŠãããã®ãšããŸãã
æºå
MavenäŸåé¢ä¿ãªã©ã
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.31</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.seasar.doma</groupId> <artifactId>doma-core</artifactId> <version>2.53.1</version> </dependency> <dependency> <groupId>org.seasar.doma</groupId> <artifactId>doma-processor</artifactId> <version>2.53.1</version> <optional>true</optional> </dependency> <dependency> <groupId>com.github.database-rider</groupId> <artifactId>rider-junit5</artifactId> <version>1.35.0</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.jupiter</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>org.junit.platform</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.9.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <version>3.23.1</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> </plugin> </plugins> </build>
ãã€ã³ãã¯ããã¡ãã§ããã
<dependency> <groupId>com.github.database-rider</groupId> <artifactId>rider-junit5</artifactId> <version>1.35.0</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.jupiter</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>org.junit.platform</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
Database Riderã®ã¢ãŒãã£ãã¡ã¯ãã®ãã¡ãJUnit 5åãã®rider-junit5
ã䜿ã£ãŠãããšããã§ããã
äŸåããŠããJUnit 5ãå€ãã£ãã®ã§ãexclude
ããŠJUnit 5ã¯èªåã§è¿œå ããŸããã
ããŒãã«ã¯ã以äžã®å®çŸ©ã§äœæã
create table book( isbn varchar(14), title varchar(100), price int, publish_date date, category varchar(20), primary key(isbn) );
ç¶ããŠãDoma 2ã䜿ã£ãããã°ã©ã ãæžããŠãããŸãã
ãšã³ãã£ãã£ã
src/main/java/org/littlewings/databaserider/Book.java
package org.littlewings.databaserider; import java.time.LocalDate; import org.seasar.doma.Entity; import org.seasar.doma.Id; @Entity public class Book { @Id String isbn; String title; Integer price; LocalDate publishDate; String category; public static Book create(String isbn, String title, Integer price, LocalDate publishDate, String category) { Book book = new Book(); book.setIsbn(isbn); book.setTitle(title); book.setPrice(price); book.setPublishDate(publishDate); book.setCategory(category); return book; } // getterïŒsetterã¯çç¥ }
Daoã
src/main/java/org/littlewings/databaserider/BookDao.java
package org.littlewings.databaserider; import java.util.List; import org.seasar.doma.Dao; import org.seasar.doma.Delete; import org.seasar.doma.Insert; import org.seasar.doma.Select; import org.seasar.doma.Sql; @Dao public interface BookDao { @Insert int insert(Book book); @Sql("select /*%expand*/* from book where isbn = /* isbn */'dummy'") @Select Book selectByIsbn(String isbn); @Sql("select /*%expand*/* from book order by price desc") @Select List<Book> selectAllOrderByPriceDesc(); @Delete int delete(Book book); }
Configã
src/main/java/org/littlewings/databaserider/DomaConfig.java
package org.littlewings.databaserider; import javax.sql.DataSource; import org.seasar.doma.jdbc.Config; import org.seasar.doma.jdbc.Naming; import org.seasar.doma.jdbc.dialect.Dialect; import org.seasar.doma.jdbc.dialect.MysqlDialect; import org.seasar.doma.jdbc.tx.LocalTransactionDataSource; import org.seasar.doma.jdbc.tx.LocalTransactionManager; import org.seasar.doma.jdbc.tx.TransactionManager; public class DomaConfig implements Config { private static final DomaConfig CONFIG = new DomaConfig(); Dialect dialect; LocalTransactionDataSource dataSource; TransactionManager transactionManager; public static DomaConfig singleton() { return CONFIG; } private DomaConfig() { dialect = new MysqlDialect(); dataSource = new LocalTransactionDataSource( "jdbc:mysql://172.17.0.2:3306/practice?characterEncoding=utf-8&connectionCollation=utf8mb4_0900_bin", "kazuhira", "password" ); transactionManager = new LocalTransactionManager(dataSource.getLocalTransaction(getJdbcLogger())); } @Override public DataSource getDataSource() { return dataSource; } @Override public Dialect getDialect() { return dialect; } @Override public TransactionManager getTransactionManager() { return transactionManager; } @Override public Naming getNaming() { return Naming.SNAKE_LOWER_CASE; } }
ããšã¯ããããã䜿ã£ãŠãã¹ãã³ãŒããæžããŠãããŸãã
Database Riderã䜿ã£ãŠã¿ã
ã§ã¯ãDatabase Riderã䜿ã£ãŠã¿ãŸãããã
ãŸãã¯ããã¹ãã³ãŒãã®é圢ãçšæã
src/test/java/org/littlewings/databaserider/DatabaseRiderGettingStartedTest.java
package org.littlewings.databaserider; import java.sql.DriverManager; import java.time.LocalDate; import java.util.List; import com.github.database.rider.core.api.connection.ConnectionHolder; import com.github.database.rider.core.api.dataset.DataSet; import com.github.database.rider.core.api.dataset.DataSetFormat; import com.github.database.rider.core.api.dataset.ExpectedDataSet; import com.github.database.rider.core.api.exporter.ExportDataSet; import com.github.database.rider.junit5.DBUnitExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import static org.assertj.core.api.Assertions.assertThat; @ExtendWith(DBUnitExtension.class) public class DatabaseRiderGettingStartedTest { // ããã«ããã¹ããæžãïŒïŒ }
ãã¡ããèŠãªããé²ããŠãããŸãã
Database Rider Getting Started
å ã«ãJUnit 5åãã®èšå®ããã
@ExtendWith(DBUnitExtension.class) public class DatabaseRiderGettingStartedTest {
Database Rider Getting Started / Riding database in JUnit 5 tests
Getting Startedãªã©ãèŠãŠãããš@RunWith(JUnitPlatform.class)
ãèŠããšæžããŠããŸãããããã¡ãã¯ãªããŠãè¯ãããã§ããã©ãã
ãªãã@DBRider
ãšããã¢ãããŒã·ã§ã³ã䜿ã£ãŠãè¯ãããã§ãïŒäžèº«ã¯@DBUnitExtension
ãš@Test
ã®åæïŒã
import com.github.database.rider.junit5.api.DBRider; @DBRider public class DatabaseRiderGettingStartedTest {
ããŒã¿ã®äŸã
Database Rider Getting Started / Example
ä»åã¯ããããªããŒã¿ãçšæããŸããã
src/test/resources/dataset/books.yml
book: - isbn: "978-4295008477" title: "æ°äžä»£Javaããã°ã©ãã³ã°ã¬ã€ã[Java SE 10/11/12/13ãšèšèªæ¡åŒµãããžã§ã¯ã]" price: 2860 publish_date: "2020-03-13" category: "java" - isbn: "978-4621303252" title: "Effective Java 第3ç" price: 4400 publish_date: "2018-10-30" category: "java" - isbn: "978-4774189093" title: "Javaæ¬æ Œå ¥é ãã¢ãã³ã¹ã¿ã€ã«ã«ããåºç€ãããªããžã§ã¯ãæåã»å®çšã©ã€ãã©ãªãŸã§" price: 3278 publish_date: "2017-04-18" category: "java" - isbn: "978-4798161488" title: "MySQL培åºå ¥é 第4ç MySQL 8.0察å¿" price: "4180" publish_date: "2020-07-06" category: "mysql" - isbn: "978-4798147406" title: "詳解MySQL 5.7 æ¢ãŸãã¬é²åã«ä¹ãé ããªãããã®ãã¯ãã«ã«ã¬ã€ã" price: 3960 publish_date: "2016-08-26" category: "mysql"
ãã¡ããã@DataSet
ã¢ãããŒã·ã§ã³ã§æå®ããŸããã¯ã©ã¹ãã¹äžã®ãã¡ã€ã«ãæå®ãããã§è¯ãããã§ãã
@Test @DataSet("dataset/books.yml") public void gettingStarted() { BookDao bookDao = new BookDaoImpl(DomaConfig.singleton()); DomaConfig .singleton() .getTransactionManager() .required(() -> { Book mysqlBook = bookDao.selectByIsbn("978-4798161488"); assertThat(mysqlBook).isNotNull(); assertThat(mysqlBook.getTitle()).isEqualTo("MySQL培åºå ¥é 第4ç MySQL 8.0察å¿"); assertThat(mysqlBook.getPrice()).isEqualTo(4180); assertThat(mysqlBook.getPublishDate()).isEqualTo(LocalDate.of(2020, 7, 6)); assertThat(mysqlBook.getCategory()).isEqualTo("mysql"); List<Book> books = bookDao.selectAllOrderByPriceDesc(); assertThat(books).hasSize(5); assertThat(books.stream().map(Book::getPrice).toList()).containsExactly(4400, 4180, 3960, 3278, 2860); }); }
@DataSet
ã¢ãããŒã·ã§ã³ã¯ãããŒã¿ãã»ããã¢ããããã¢ãããŒã·ã§ã³ã§ãã
Database Rider Getting Started / Configuration
ããã©ã«ãã§ã¯ãæå®ããDataSet
ã®æå
¥å
ã®ããŒãã«ã1床å
šä»¶åé€ããŠããããŒã¿ãæå
¥ããåãã«ãªãããã§ããããã¯strategy
ã§
æå®ããŸãã
delete
ã®é ãæå®ãããããã¹ãã®ååŸã«ããŒã¿ããŒã¹å
ã®ããŒã¿ãåé€ãããããã¹ãã®ååŸã«SQLãã¹ã¯ãªãããå®è¡ããããšã
ã§ããããã§ãã
ä»åã¯ã@DataSet
ã¢ãããŒã·ã§ã³ã§ç»é²ãããããŒã¿ãã¢ãµãŒã·ã§ã³ãããœãŒã¹ã³ãŒãã«ãªã£ãŠããŸãã
DomaConfig .singleton() .getTransactionManager() .required(() -> { Book mysqlBook = bookDao.selectByIsbn("978-4798161488"); assertThat(mysqlBook).isNotNull(); assertThat(mysqlBook.getTitle()).isEqualTo("MySQL培åºå ¥é 第4ç MySQL 8.0察å¿"); assertThat(mysqlBook.getPrice()).isEqualTo(4180); assertThat(mysqlBook.getPublishDate()).isEqualTo(LocalDate.of(2020, 7, 6)); assertThat(mysqlBook.getCategory()).isEqualTo("mysql"); List<Book> books = bookDao.selectAllOrderByPriceDesc(); assertThat(books).hasSize(5); assertThat(books.stream().map(Book::getPrice).toList()).containsExactly(4400, 4180, 3960, 3278, 2860); });
ãšããã§ãæ¥ç¶å
ã«é¢ããæ
å ±ããŸã åºãŠããŠããŸãããããŒã¿ããŒã¹æ¥ç¶ã¯ãConnectionHolder
ãšãããã®ã䜿ã£ãŠå®çŸ©ããããã§ãã
@ExtendWith(DBUnitExtension.class) public class DatabaseRiderGettingStartedTest { ConnectionHolder connectionHolder = () -> DriverManager.getConnection( "jdbc:mysql://172.17.0.2:3306/practice?characterEncoding=utf-8&connectionCollation=utf8mb4_0900_bin", "kazuhira", "password" );
ãã ãä»åã¯ãã¡ãã䜿ããã«Database Riderã®èšå®ãã¡ã€ã«ã§å®çŸ©ããããšã«ããŸããã
Database Rider Getting Started / Configuration
dbunit.yml
ãšãããã¡ã€ã«ã§ããïŒ@DBUnit
ã¢ãããŒã·ã§ã³ã§ãããã¿ããã§ããïŒã
src/test/resources/dbunit.yml
properties: caseSensitiveTableNames: true connectionConfig: url: "jdbc:mysql://172.17.0.2:3306/practice?characterEncoding=utf-8&connectionCollation=utf8mb4_0900_bin" user: "kazuhira" password: "password"
ããã©ã«ãã ãšcaseSensitiveTableNames
ãfalse
ãªã®ã§ãããŒã¿ã»ããå
ã®ããŒãã«åãã«ã©ã åã®å€§æåå°æåãäžèŽããªããš
ãã¡ãªã®ã§ãããä»åã¯true
ã«ããŸããã
次ã¯ãã¢ãµãŒã·ã§ã³ãDatabase Riderã«ä»»ããæ¹æ³ã詊ããŠã¿ãŸãã@ExpectedDataSet
ã¢ãããŒã·ã§ã³ã䜿ãããã§ãã
Database Rider Getting Started / Database assertion with ExpectedDataSet
@ExpectedDataSet
ã¢ãããŒã·ã§ã³ã䜿ããšããã¹ãå®è¡åŸã®ããŒãã«ã®ç¶æ
ãš@ExpectedDataSet
ã¢ãããŒã·ã§ã³ã§æå®ããããŒã¿ã»ããã®
å
容ãã¢ãµãŒã·ã§ã³ããŠãããŸãã
@Test @DataSet("dataset/books.yml") @ExpectedDataSet(value = "dataset/expectedBooks.yml", orderBy = "isbn", ignoreCols = "price") public void expectedDataSet() { BookDao bookDao = new BookDaoImpl(DomaConfig.singleton()); DomaConfig .singleton() .getTransactionManager() .required(() -> { assertThat( bookDao .delete( Book.create("978-4774189093", "Javaæ¬æ Œå ¥é ãã¢ãã³ã¹ã¿ã€ã«ã«ããåºç€ãããªããžã§ã¯ãæåã»å®çšã©ã€ãã©ãªãŸã§", 3278, LocalDate.of(2017, 4, 18), "java") ) ).isEqualTo(1); bookDao.insert(Book.create("978-1492080510", "High Performance MySQL: Proven Strategies for Operating at Scale", 6312, LocalDate.of(2021, 12, 24), "mysql")); List<Book> books = bookDao.selectAllOrderByPriceDesc(); assertThat(books).hasSize(5); }); }
@DataSet
ã¢ãããŒã·ã§ã³ã§ããŒã¿ãããŒããããã¹ãå
ã§ããŒã¿ã®åé€ã»è¿œå ãããŠã@ExpectedDataSet
ã§ã¢ãµãŒã·ã§ã³ããŸãã
çšæãããã¡ã€ã«ã¯ããããªæãã§ãã
src/test/resources/dataset/expectedBooks.yml
book: - isbn: "978-4295008477" title: "æ°äžä»£Javaããã°ã©ãã³ã°ã¬ã€ã[Java SE 10/11/12/13ãšèšèªæ¡åŒµãããžã§ã¯ã]" price: 2860 publish_date: "2020-03-13" category: "java" - isbn: "978-4621303252" title: "Effective Java 第3ç" price: 4400 publish_date: "2018-10-30" category: "java" - isbn: "978-4798161488" title: "MySQL培åºå ¥é 第4ç MySQL 8.0察å¿" price: 4180 publish_date: "2020-07-06" category: "mysql" - isbn: "978-4798147406" title: "詳解MySQL 5.7 æ¢ãŸãã¬é²åã«ä¹ãé ããªãããã®ãã¯ãã«ã«ã¬ã€ã" price: 3960 publish_date: "2016-08-26" category: "mysql" - isbn: "978-1492080510" title: "High Performance MySQL: Proven Strategies for Operating at Scale" price: 1006312 publish_date: "2021-12-24" category: "mysql"
ããŒã¿ã®ã¢ãµãŒã·ã§ã³ã®éã«ã¯ãorderBy
ã§ãœãŒãé ãæå®ããæ¹ãè¯ãããã§ããã
@ExpectedDataSet(value = "dataset/expectedBooks.yml", orderBy = "isbn", ignoreCols = "price")
ä»åã¯isbn
ã«ã©ã ã§ãœãŒãããŸããããããæå®ããŠããªããŠãæåã¢ãµãŒã·ã§ã³ã«å€±æããŸãããâŠã
ãŸããæ¯èŒå¯Ÿè±¡ã«ããªãã«ã©ã ãignoreCols
ã§æå®ããŠããŸããããã確èªããããã«ãç»é²ããããŒã¿ãš
bookDao.insert(Book.create("978-1492080510", "High Performance MySQL: Proven Strategies for Operating at Scale", 6312, LocalDate.of(2021, 12, 24), "mysql"));
ã¢ãµãŒã·ã§ã³ããããŒã¿ã埮åŠã«ããããŠããŸããprice
ã«ã©ã ã§ããã
- isbn: "978-1492080510" title: "High Performance MySQL: Proven Strategies for Operating at Scale" price: 1006312 publish_date: "2021-12-24" category: "mysql"
ããã§ãã¢ãµãŒã·ã§ã³ã«å€±æãããšã©ããªãã確èªããŠã¿ãŸããããŒã¿ã®åé€ã»ç»é²ããã³ãŒãã¯æ®ãã€ã€ãã¢ãµãŒã·ã§ã³ã§äœ¿çšãããã¡ã€ã«ã
å
¥åãšåãã«ããŠã¿ãŸãã
@Test @DataSet("dataset/books.yml") @ExpectedDataSet(value = "dataset/books.yml", orderBy = "isbn", ignoreCols = "price") public void expectedDataSetFailure() { BookDao bookDao = new BookDaoImpl(DomaConfig.singleton()); DomaConfig .singleton() .getTransactionManager() .required(() -> { assertThat( bookDao .delete( Book.create("978-4774189093", "Javaæ¬æ Œå ¥é ãã¢ãã³ã¹ã¿ã€ã«ã«ããåºç€ãããªããžã§ã¯ãæåã»å®çšã©ã€ãã©ãªãŸã§", 3278, LocalDate.of(2017, 4, 18), "java") ) ).isEqualTo(1); bookDao.insert(Book.create("978-1492080510", "High Performance MySQL: Proven Strategies for Operating at Scale", 6312, LocalDate.of(2021, 12, 24), "mysql")); List<Book> books = bookDao.selectAllOrderByPriceDesc(); assertThat(books).hasSize(5); }); }
çµæã
org.dbunit.assertion.DbComparisonFailure: value (table=book, row=0, col=category) expected:<java> but was:<mysql>
ã¡ãã£ãšãããã«ããæ°ãããŸããâŠrow
ïŒè¡çªå·ïŒããã³ãã«æ¢ãæãã§ããããâŠã
æåŸã«ãããŒã¿ã®ãšã¯ã¹ããŒããè¡ã£ãŠã¿ãŸããããã°ã©ã ã§åºåããæ¹æ³ãšã@ExportDataSet
ã¢ãããŒã·ã§ã³ãäœ¿ãæ¹æ³ãããããã§ãã
Database Rider Getting Started / Exporting DataSets
ä»åã¯ã@ExportDataSet
ã¢ãããŒã·ã§ã³ã䜿ã£ãŠã¿ãŸãã
以äžã®ãã¹ãã¡ãœããå®è¡æã®å šããŒãã«ïŒãšãã£ãŠããããŒãã«ã¯ã²ãšã€ã ãã§ããïŒã®ããŒã¿ããšã¯ã¹ããŒãããŸãã
@Test @ExportDataSet(format = DataSetFormat.YML, outputName = "target/exported/dataset/exportedAllTables.yml") public void exportAllTables() { }
ãã©ãŒãããã¯ãJSONãYAMLãXMLãXLSãCSVããã®æå®ã§ãããããã©ã«ãã¯YAMLïŒDataSetFormat.YML
ïŒã§ãã
åºåçµæã¯ãã¡ãã
target/exported/dataset/exportedAllTables.yml
book: - isbn: "978-1492080510" title: "High Performance MySQL: Proven Strategies for Operating at Scale" price: 6312 publish_date: "2021-12-24" category: "mysql" - isbn: "978-4295008477" title: "æ°äžä»£Javaããã°ã©ãã³ã°ã¬ã€ã[Java SE 10/11/12/13ãšèšèªæ¡åŒµãããžã§ã¯ã]" price: 2860 publish_date: "2020-03-13" category: "java" - isbn: "978-4621303252" title: "Effective Java 第3ç" price: 4400 publish_date: "2018-10-30" category: "java" - isbn: "978-4798147406" title: "詳解MySQL 5.7 æ¢ãŸãã¬é²åã«ä¹ãé ããªãããã®ãã¯ãã«ã«ã¬ã€ã" price: 3960 publish_date: "2016-08-26" category: "mysql" - isbn: "978-4798161488" title: "MySQL培åºå ¥é 第4ç MySQL 8.0察å¿" price: 4180 publish_date: "2020-07-06" category: "mysql"
ä»åã¯ããããªãšããã§ããããã
Database Riderã®å®è£ çã«ã¯ããã¡ãã®ã¯ã©ã¹ãèŠããšè¯ããããªæãã§ããã
ãŸãšã
Database Riderã䜿ã£ãŠã¿ãŸããã
èåŸã«DbUnitãããã®ã§ãããããªãç°¡åã«äœ¿ããã®ã§ã¯ãªãããªãšæããŸããDbUnitãçŽæ¥äœ¿ãããã¯ããã¡ãã®æ¹ãè¯ãããã§ãã
ããããã¯ãDatabase Riderã䜿ã£ãŠããŒã¿ããŒã¹é¢ä¿ã®ãã¹ããè¡ãã®ãååããã§ããã