簡體   English   中英

對表進行單元測試以確定有多個記錄

[英]Unittesting a table to determine that there are more than one record

我正在嘗試創建一個Assert.AreEqual查詢,該查詢確定給定表中的記錄確實包含>= 1 (行/記錄)

我知道查詢會隨着以下時間的變化而變化:

Assert.AreEqual(context.Count().Ticket_Number >= 1);

要么

Assert.AreEqual(context[row].Ticket_Number.Count() >= 1);

該查詢返回10,000 +行:

SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage

我要確保該查詢具有多於1條記錄(對於緊隨其后的測試,期望什么都不會返回)。

我不知道如何使用這些語句來專門針對行,因此不勝感激。

我認為您想要的是這樣的方法來獲取計數(然后將結果存儲在變量中以使代碼更簡潔):

SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage

現在使用

Assert.IsTrue(resultFromSqlQuery >= 1);

如果您要測試比較,則可能要使用Assert.IsTrue而不是AreEqual因為您實際上並未在測試是否相等。 假設您可以將記錄計數放入一個名為recordCount的單獨變量中:

Assert.IsTrue (recordCount >= 1);

對於這么多的行,您應該使用LINQ to SQL來過濾查詢,以僅返回1個結果,以最大化性能。

Assert.IsTrue(sqlContext.TableName.FirstOrDefault(row => row.PrimaryKey != null) != null);

我們將表的第一行包含一個非空的PK,如果有結果,則測試將通過。

通常,確定某項記錄是否存在多個記錄的SQL方法是使用EXISTS關鍵字:

IF EXISTS(SELECT [Ticket_Number] FROM dbo.SRS_Ticket_LifeCycle_Stage)
   -- do something

或者,您可以使用COUNT獲取記錄數:

SELECT COUNT([Ticket_Number]) FROM dbo.SRS_Ticket_LifeCycle_Stage

暫無
暫無

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

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