亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Spring Data 倉庫填寫測試數據

使用 Spring Data 倉庫填寫測試數據

呼喚遠方 2021-11-24 16:15:50
我想問一下是否可以使用應用程序存儲庫(基于Spring Data)來填寫測試數據。我知道我可以將 sql 文件與數據一起使用,但有時我需要更動態的東西。我發現編寫 sql 或數據集定義很麻煩(并且在架構更改的情況下難以維護)。使用應用程序存儲庫有什么問題嗎?那里已經有所有基本的 CRUD 操作。請注意,我們特別在談論集成測試。我覺得使用應用程序的一部分來測試自己有點奇怪。也許我可以創建另一組用于測試上下文的存儲庫。
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

不,使用 Spring Data 存儲庫創建測試數據絕對沒有錯。

我什至更喜歡這樣,因為它通常允許更簡單的重構。

與在測試中使用 JPA 一樣,您需要記住 JPA 實現是后寫緩存。您可能希望EntityManager在設置測試數據后刷新和清除數據,這樣您就不會從第一級緩存中獲得真正應該來自數據庫的任何內容。此外,這可確保數據實際寫入數據庫,并且會出現問題。

您可能對幾篇關于使用 Hibernate 進行測試的文章感興趣。他們不使用 Spring Data,但它可以與 Spring Data JPA 一起使用。


查看完整回答
反對 回復 2021-11-24
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我建議Flyway用于設置您的數據庫并使用Flyway 測試擴展進行集成測試。


這樣你就可以做這樣的事情:


@ContextConfiguration(locations = {"/context/simple_applicationContext.xml"})

@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,

    FlywayTestExecutionListener.class})

@Test

@FlywayTest(locationsForMigrate = {"loadmsql"}) // execution once per class

public class MethodTest extends AbstractTestNGSpringContextTests {


  @BeforeClass

  @FlywayTest(locationsForMigrate = {"loadmsql"}) // execution once per class

  public static void beforeClass() {

    // maybe some additional things

  }


  @BeforeMethod

  @FlywayTest(locationsForMigrate = {"loadmsql"}) // execution before each test method

  public void beforeMethod() {

    // maybe before every test method

  }



  @Test

  @FlywayTest(locationsForMigrate = {"loadmsql"}) // as method annotation

  public void simpleCountWithoutAny() {

    // or just with an annotation above the test method where you need it

  }


查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號