2016-04-25 57 views
0

場景:計提與NUnit的斷言集合訂單時,處理相同的值

我使用Assert.That(values, Is.Ordered.Descending)其中values是字符串格式DateTime是否列表。

預期的結果:具有相同string

連續值由排序功能視爲有效。

實際結果:

重複/順序具有相同值的值不被允許的,則拋出異常。

是否有一個內置選項/參數,可以讓我指定相等/重複值是否正確?

+0

嘗試處理重複值的自定義異常類型的ExpectedException(屬性)。 – user2347763

+0

Hi @GrantWinney是你的NUnit版本大於2.5嗎?請參閱http://www.nunit.org/index.php?p=collectionConstraints&r=2.5.10的底部。 –

+0

對不起@GrantWinney我在Visual Studio中正確輸入了它,但是在將它轉錄到我的問題時失敗了。我用正確的語法更新了這個問題。 –

回答

0

在撰寫本文時,沒有重載/方法來指定重複值可以作爲序列的一部分。

我寫了自己的方法來處理這種情況。

private void AssertColumnIsOrderedByDateDescending(int columnIndex) 
    { 
     Dictionary<int, ReadOnlyCollection<IWebElement>> tableData = Driver.GetTableData(IssuesTableBodySelector); 
     DateTime previousDate = DateTime.Now.AddDays(1); 

     foreach (ReadOnlyCollection<IWebElement> webElements in tableData.Values) 
     { 
      string dateTimeString = webElements.ElementAt(columnIndex).Text; 

      if (string.IsNullOrWhiteSpace(dateTimeString)) 
       continue; 

      DateTime currentDate = DateTime.Parse(dateTimeString); 

      Assert.LessOrEqual(currentDate, previousDate); 

      previousDate = currentDate; 
     } 
    } 

我的方案的議題僅過了追溯日期創建這樣.AddDays(1)是起始值一個可行的黑客。