Spring Boot之DAO層的單元測試小結
DAO層
dao是data access object的簡寫,基於Java物件訪問資料庫中的資料,這是應用中必備的系統模組。
測試註解
- DataJpaTest
主要用以測試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和建立時間三個欄位。
定義Repository DAO物件:
@Repository
public interface GameRepository extends JpaRepository<GameEntity, Long> {
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()));
}
}
在上述測試用例中使用了@DataJpaTest用來啟動DAO層的單元測試。 正常基於@Autowired引入GameRepository例項。 這裡預設提供了TestEntityManager例項,主要用於在測試環節下,引入EntityManager例項,可以用來執行其它的SQL操作。
總結
這裡做了一些假定,由於其只有很少的依賴和業務邏輯。在實際業務場景中,業務邏輯以及資料操作會比較複雜,單元測試用例的依賴會比較多。
相關文章
- Spring Boot單元測試之服務層測試總結Spring Boot
- Spring Boot之單元測試用例總結Spring Boot
- Spring Boot 單元測試Spring Boot
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- 使用 Spring Boot 進行單元測試Spring Boot
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- Spring Boot單元和整合測試概述 | rieckpilSpring BootKPI
- 怎樣使用Spring Boot專案的單元測試Spring Boot
- 怎樣使用Spring Boot專案的單元測試?Spring Boot
- 測試 之Java單元測試、Android單元測試JavaAndroid
- Golang 單元測試 - 介面層Golang
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- 如何建立自己的Spring Boot Starter併為其編寫單元測試Spring Boot
- Golang 單元測試 - 資料層Golang
- Golang 單元測試 - 邏輯層Golang
- 我們應該測試 DAO 層嗎?
- Java單元測試常用工具類小結Java
- 單元測試:單元測試中的mockMock
- Go 單元測試之mock介面測試GoMock
- Spring AOP單元測試綜合指南Spring
- Spring Boot(十二):Spring Boot 如何測試打包部署Spring Boot
- SpringBoot與單元測試JUnit的結合Spring Boot
- Java單元測試神器之MockitoJavaMockito
- Java單元測試技巧之PowerMockJavaMock
- Seata之小結和測試
- 021-Spring Boot 測試Spring Boot
- Spring Boot 中測試 CORSSpring BootCORS
- 鮑勃大爺:單元測試中單元是多小?
- Spring單元測試教程(JUnit5+Mockito)SpringMockito
- 單元測試-【轉】論單元測試的重要性
- 金字塔測試原理:寫好單元測試的8個小技巧,一文總結
- 單元測試&反射機制(未完結)反射
- springboot系列文章之使用單元測試Spring Boot
- 開發必備之單元測試
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- Go 單元測試之HTTP請求與API測試GoHTTPAPI
- 如何在spring環境中做單元測試Spring
- 如何對Spring MVC中的Controller進行單元測試SpringMVCController