Spring BootのDAO層のセルテストの結果


DAO層
daoはdata access objectの簡単な書き方で、Javaオブジェクトに基づいてデータベース中のデータにアクセスします.これはアプリケーションに必要なシステムモジュールです.
コメントをテスト
  • Data JpaTestは主にDAOの業務機能をテストするために用いられます.
    DAO層のエンティティ定義
    エンティティBeanの定義は以下の通りである.
    @Entity
    @Data
    public class GameEntity {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long id;
    
        @Column
        private String name;
    
        @Column
        @Temporal(TemporalType.TIMESTAMP)
        private Date createdTime;
    }
    
    このBeanでは、id,name,作成時間の3つのフィールドが定義されています.Repository DAOオブジェクトを定義します.
    @Repository
    public interface GameRepository extends JpaRepository {
        public GameEntity findByName(String name);
    }
    
    このRepositoryにおいて、nameに基づいてGameEntityのインスタンスを照会する方法が定義されている.
    DAOのユニットテスト
    ユニットテストの用例は以下の通りです.
    import lombok.extern.slf4j.Slf4j;
    import org.junit.Assert;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
    import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
    import org.springframework.test.context.junit4.SpringRunner;
    import java.util.Date;
    import java.util.Objects;
    import static org.hamcrest.Matchers.greaterThan;
    
    @RunWith(SpringRunner.class)
    @DataJpaTest
    @Slf4j
    public class GameRepositoryTest {
        @Autowired
        private GameRepository gameRepository;
    
        @Autowired
        private TestEntityManager entityManager;
    
        @Test
        public void testGame() {
           GameEntity gameEntity = new GameEntity();
           gameEntity.setCreatedTime(new Date());
           gameEntity.setName("zhangsan");
    
           gameEntity = this.gameRepository.save(gameEntity);
    
           Assert.assertTrue(Objects.nonNull(gameEntity));
           Assert.assertThat("id is null", 1l, greaterThan(gameEntity.getId()));
        }
    }
    
    上記のテストケースでは、DAO層のセルテストを開始するために@DataJpaTestを使用しています.正常には@Autowiredに基づいてGameRepositoryを導入しています.ここではデフォルトでTestEnttityManagerの例を提供しています.主にテスト手順でEnttityManagerの例を紹介して、他のSQL操作を実行することができます.
    締め括りをつける
    ここでいくつかの仮定をしたが、それは僅かな依存性と業務ロジックしかないからである.実際のビジネスシーンでは、業務ロジックやデータ操作が複雑になり、ユニットテストケースの依存度が高くなります.