Spring BootのDAO層のセルテストの結果
2213 ワード
DAO層
daoはdata access objectの簡単な書き方で、Javaオブジェクトに基づいてデータベース中のデータにアクセスします.これはアプリケーションに必要なシステムモジュールです.
コメントをテスト Data JpaTestは主にDAOの業務機能をテストするために用いられます.
DAO層のエンティティ定義
エンティティBeanの定義は以下の通りである.
DAOのユニットテスト
ユニットテストの用例は以下の通りです.
締め括りをつける
ここでいくつかの仮定をしたが、それは僅かな依存性と業務ロジックしかないからである.実際のビジネスシーンでは、業務ロジックやデータ操作が複雑になり、ユニットテストケースの依存度が高くなります.
daoはdata access objectの簡単な書き方で、Javaオブジェクトに基づいてデータベース中のデータにアクセスします.これはアプリケーションに必要なシステムモジュールです.
コメントをテスト
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操作を実行することができます.締め括りをつける
ここでいくつかの仮定をしたが、それは僅かな依存性と業務ロジックしかないからである.実際のビジネスシーンでは、業務ロジックやデータ操作が複雑になり、ユニットテストケースの依存度が高くなります.