我試圖寫一個模塊的單元測試,它會給我一個給定的標準的隨機數字列表。如何測試有時會失敗?
我正在寫的特定測試是對原始序列進行重新排列。我測試該
- 的序列具有相同的長度
- 的序列具有相同的值
- 的序列是不以同樣的順序
這樣做的問題是,有時序列爲,順序相同。什麼是解決這個問題的最好方法?
我正在使用NUnit(但可以使用另一個測試框架,如果有幫助)。
我試圖寫一個模塊的單元測試,它會給我一個給定的標準的隨機數字列表。如何測試有時會失敗?
我正在寫的特定測試是對原始序列進行重新排列。我測試該
這樣做的問題是,有時序列爲,順序相同。什麼是解決這個問題的最好方法?
我正在使用NUnit(但可以使用另一個測試框架,如果有幫助)。
你是如何生成你的隨機數的?
我會首先控制隨機數發生器的種子,並將第三次測試重新定義爲「當我們使用不同的種子時,序列的順序不一樣」。
什麼是最好的方式來處理 與此?
直到需求穩定後,才真正沒有辦法「處理它」。要麼洗牌確保序列失序(在這種情況下,洗牌不是真正的「隨機」),或者它們的順序相同也是可以的。如果可以讓shuffle按照相同的順序返回某些內容,那麼可以編寫一個測試來檢查大量運行結果與預期分發的分佈情況,但這與測試中的「random 「結果。如果洗牌不能返回相同的順序,那麼您可以多次運行該函數,以使您具有可接受的置信水平,即洗牌不會返回相同的順序,所以適用相同的一般原則。使用大量運行並根據允許的公差測量結果。
希望這有助於!
這些要求不匹配。如果你真的是隨機洗牌,那麼顯然這個名單可以不變。
雖然有一個選項。當你創建你的隨機數發生器時,你可以傳入一個「種子」。如果你總是通過相同的種子,你應該總是得到相同的答案。現在你已經隨機取出了你的隨機函數,你可以輕鬆地進行單元測試。