簡體   English   中英

如何運行mstest單元測試,以便基礎數據庫有時間正確構建?

[英]How to run mstest unit tests so that an underlying database has time to build properly?

我有一個C#庫,我為此編寫了許多單元測試。 該庫是數據訪問層庫,並且需要SQL Server的全文本索引功能,這意味着LocalDb將無法工作。 單元測試正在連接到本地SQL Server實例。 該項目有一個IDatabaseInitializer ,它可以為每個測試刪除並重新創建數據庫,因此每個測試都有一組新的數據假定可以使用,這意味着每個測試都可以獨立運行-無需排序。

從第一天起我就遇到了一個問題,但是至今尚未解決,那就是如果我僅一次運行所有測試,那么某些測試將會失敗。 如果我返回並單獨運行這些測試,則它們會成功。 當我一次全部運行時,並非總是相同的測試會失敗。

我認為這是因為它們都在同一個數據庫中運行得如此之快。 在下一次測試運行之前,數據庫可能未正確刪除和重新創建。 在一個簡單的數據庫之上,我還獲得了一些測試才能通過的SQL Server全文索引。 全文索引將在后台填充,因此在填充測試數據庫的表后不會立即“就緒”。 全文索引可能需要一兩秒鍾才能構建。 這將導致針對全文索引的測試始終失敗,除非我在調試器中逐步執行了初始化程序並在構建全文索引時暫停了幾秒鍾。

我的問題是,有什么辦法可以避免這種數據庫重建沖突? 另外,是否有一種方法可以“放慢”需要全文索引的測試,以便有時間填充?

您可以使用具有固定數據的數據庫。 對於測試,您使用從TestInitialize開始並在TestCleanup上回滾的事務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM